Hirdetés
Új hozzászólás Aktív témák
-
dellfanboy
őstag
sziasztok, segítsetek már légyszi
van egy tábla ami másik adatbázisban van, az It szerint van hozzá olvasási jogom.
adatbázis linkel elérem de nekem még sehogyse sikerült ráfuttatnom egy szimpla select *from-otígy néz ki az adatbázis link:
drop database link xxxxxx;
create database link aaaaaaa connect to usernev identified by password using ’xxxxxx’
select *from tábla_xxxxxxvmit rosszul írtam? sql szerint invalid character hibát kapok SQL Error: ORA-00911 ill ORA-00933
hogy kell egy sima selectet írni, ha a táblát adatbázis link-el érem el csak?
-
Jim-Y
veterán
Sziasztok
MSSQL-es Oracle kérdésem lenneHogy tudok egy stringet dátummá konvertálni?
Van egy alap query amiben a feltétel
where begintime > SYSDATE-1
én ezt akartam átírni erre
where begintime > '2013-08-12' de hibát kaptam -> literal does not match format string
ebből arra következtettem, hogy a '2013-08-12' sztringet dátummá kéne konvertálni, ami a DATE('2013-08-12')-vel nem sikerült, a neten meg csak ilyen találatok vannak
select convert(varchar, getdate(), 1) ami nekem nem jó.
Ötlet?
-
-
Ispy
nagyúr
válasz
Speeedfire
#1893
üzenetére
Akkor viszont a subselectek helyett viewk, majd joinnal összekötöd ezeket.
-
Ispy
nagyúr
válasz
Speeedfire
#1891
üzenetére
Én biztosan nem próbálnék meg subselectes unionos viewkat használni, egy tárolt eljárásban szét kell szedni a feladatot, mert ez így nem lesz egy villám.
-
Ispy
nagyúr
válasz
Speeedfire
#1889
üzenetére
Hol használod? Mire? Tárolt eljárás? Minek kell ennyi subselect? Kód?
-
bpx
őstag
válasz
Speeedfire
#1887
üzenetére
"Subqueries cannot be used in the FROM clause of a view. "
-
Speeedfire
félisten
Szeretnék egy view-ot készíteni, de 3db union van benne. Illetve minden egyes select tartalmaz subselectet és join-t. Ezt így nem lehet megoldani?

Error 1349-et ír ki nekem rá.
-
Speeedfire
félisten
válasz
Apollo17hu
#1885
üzenetére
De listagg() csak oracle alatt van nem? A group_concat szerintem csak mysql specifikus. Bár a mysql oracle termék, szóval lehet van rá ilyen függvény.

-
Apollo17hu
őstag
válasz
Speeedfire
#1884
üzenetére
Jövő héten ki fogom próbálni, pont az volt a gáz, hogy a listagg() függvény nem engedte a DISTINCT-et.
-
Speeedfire
félisten
válasz
Apollo17hu
#1883
üzenetére
A group_concat() képes erre.

select group_concat(distinct mezonev separator ', ') as aggregate
from tablaA fenti példámra egyelőre nem találok jobbat, szerintem max tárolt eljárással lehetne szebbet, de azt meg nem akarok osztott tárhelyen. Egyáltalán azt sem tudom lehet-e.

-
Apollo17hu
őstag
válasz
Speeedfire
#1882
üzenetére
Ja, most már értem. Akkor én passzolom a témát.
Botlottam már hasonló problémába korábban, akkor úgy szerettem volna az értékeket összefűzni egy mezőbe, hogy az ismétlődések csak egyszer jelenjenek meg benne. Lényegében te is ezt csinálnád a nullértékekkel/nullákkal. Na, erre nincs normális függvény [prog.hu -n legalábbis nem tudtak segíteni, és gugli is csak olyan találatokat adott, ahol ciklusokat kell használni (PL/SQL)].Esetleg ha úgy csinálnád, hogy:
SELECT
CASE WHEN a.int1 IS NOT NULL THEN a.int1 || ', ' END ||
CASE WHEN a.int2 IS NOT NULL THEN a.int2 || ', ' END ||
CASE WHEN a.int3 IS NOT NULL THEN a.int3 || ', ' END ||
CASE WHEN a.int4 IS NOT NULL THEN a.int4 || ', ' END ||
CASE WHEN a.int5 IS NOT NULL THEN a.int5 || ', ' END ||
a.int6
FROM (...) a -
Speeedfire
félisten
válasz
Apollo17hu
#1881
üzenetére
De utána hogyan szűröm?
Ha összekonkatenálom, akkor ilyen lesz. 0,1,0,0,1 nekem pedig ilyen kellene 2,5. Tehát az adott elem sorszáma. -
Apollo17hu
őstag
válasz
Speeedfire
#1880
üzenetére
Az nem lenne jó, ha előbb a 2. táblából csinálnál egyetlen konkatenált oszlopot (+ mellé az id oszlopot), majd az így kapott lekérdezést kötnéd (allekérdezésként) az 1. táblához?
SELECT ...
FROM tabla1
JOIN (SELECT tabla2.id, [konkatenált oszlopok]
FROM tabla2)
ON tabla1.id = tabla2.id -
Speeedfire
félisten
válasz
Speeedfire
#1879
üzenetére
Valami ilyesmit, amit utána concat_ws()-el fűznék össze, de nem hiszem, hogy nincs rá jobb megoldás.

select concat_ws(',',
`int1`,
`int2`,
`int3`,
`int4`,
`int5`,
`int6`
) as tipus
from (select
case
when `int1` = 1
then 1
end as int1,
case
when `int2` = 1
then 2
end as int2,
case
when `int3` = 1
then 3
end as int3,
case
when `int4` = 1
then 4
end as int4,
case
when `int5` = 1
then 5
end as int5,
case
when `int6` = 1
then 6
end as int6
from pelda) a;De nem túl elegáns szerintem.

-
Speeedfire
félisten
Mert left kell oda.

Adott 2 tábla.Egy-több kapcsolat van a 2 tábla között és a 2. táblából egy adott sorát szerettem volna aggregálni egy oszlopba, de a selectes résszel tökéletesen megy. Csak a join-nál nem volt jó. A joinnál előbb összefűzte az összes sor értékét, nem pedig a join feltétel alapján a megfelelőket.
Apropó, ha már aggregálás erre van megoldás?
id | int1 | int2 | int3 | int4 ...
8 | 0 | 1 | 1 | 1Ilyet szeretnék visszakapni.
id | opciok
8 | 2,3,4A concat_ws()-t néztem rá, de nem a legjobb. Az csak összefűzi az oszlopokat. Nekem viszont valami case szerkezet kellene a concat_ws()-be, ami a megfelelő oszlop alapján ad vissza értéket, ha 1 a mező értéke.
-
amargo
addikt
válasz
Speeedfire
#1876
üzenetére
left joint írtál be, nem inner joint. Mit is szeretnél pontosan?
-
Speeedfire
félisten
válasz
Speeedfire
#1876
üzenetére
Érdekes mód a select részeb írva már jó volt.

select
a.*,
(select group_concat(b.mezonev separator ',') as listagg from tabla_2 where a.id =tabla_id) b
from tabla_1 a -
Speeedfire
félisten
Adott 2 tábla, az egyiket akarom összekötni a másikkal egy join-nal, majd a 2. tábla adott típusát szeretném listagg-al összefűzni, ahogy nézem mysql alatt a group_concat van. Viszont nekem ez felhoz mindent.
select
a.*,
group_concat(b.mezonev separator ',') as listagg
from tabla_1 a
left join tabla_2 b
on a.id = b.tabla_idSzépen össze is fűzni, ellenben nem a join szerint, hanem az össze elemet ami abban a táblában van.

-
#68216320
törölt tag
Egy tárhelyszolgáltatónál pontosan fél órával többet mutat az SQL szerver NOW() függvénye, mint a jelenlegi GMT+2 időzóna ideje. Lehet ezzel kezdeni valamit? Elég kényelmetlen így használni.
-
Petya25
őstag
VB-ben kéne valami kis trükk amivel dátum bevitelkor tudnék bizonyosakat kizárni.
Ezeket egy táblában letettem és kiértékeléskor ha a tiltó listán van, jelezném.
Ugye itt az IN nem működik.If Me.datum in (select nap from datumok) Then
MsgBox "Erre a dátumra nem rögzíthet!", vbInformation
Exit Sub -
-
Jester01
veterán
válasz
bbTamas77
#1863
üzenetére
Fentiek alapján nap-óra-perc-másodperc például imígyen megkapható:
SELECT CONCAT((UNIX_TIMESTAMP('2013-12-24 18:00') - UNIX_TIMESTAMP('2013-08-01 18:49')) DIV 86400, ' ',
SEC_TO_TIME((UNIX_TIMESTAMP('2013-12-24 18:00') - UNIX_TIMESTAMP('2013-08-01 18:49')) % 86400))Kicsit csúnya, hogy kétszer kell benne elvégezni a kivonást de a SEC_TO_TIME az csak korlátozott különbséget tud egyébként kezelni. A DATEDIFF pedig buta mert az idő részt figyelmen kívül hagyja.
-
DS39
nagyúr
válasz
bbTamas77
#1863
üzenetére
dehogy nincs, Transact-SQL-ben a DATEDIFF fgv. ilyen. de az egy adott formátumban adja meg pl nap, vagy perc. teljes dátumba megadni nincs értelme, mert a hónapok nem azonos hosszúak, az évek sem.
hogy értsd: pl megadsz két dátumot, kijönne hogy különbség egy év, két hónap, 10 nap ... az a két hónap most hány nap is? tehát nem kapnál pontos értéket.
-
válasz
bbTamas77
#1861
üzenetére
Alant írtam, hogy mért nem tudod
idődátum formátummá alakítani, de még egyszer kicsit részletesebben:
- Dátummá nem tudod alakítani, mert nincs értelme. Hogy néz ki, hogy két dátum között eltelt 1 év november 19-e? A dátum ugyanis dátumot jelől, nem időtartamot. Két dátum között simán eltelhet két hónap és harminc nap, de ez 'dátum' formátumban nem értelmezhető (február 30).
- MSSQL 2008-on pl már használható a datetimeoffset típus erre a célra -
válasz
bbTamas77
#1857
üzenetére
Mivé kellene a különbséget átalakítani - ezt nem értjük még mindig?
sec = unixtime % 60 as int
min = CAST((unixtime / 60) as int) % 60
hour = CAST((unixtime / 3600) as int) % 24
day = unixtime / 86400) as intEnnél hosszabbat csak a kiinduló dátum ismeretével lehet tudni a változó hosszúságú hónapok miatt.
-
bbTamas77
aktív tag
válasz
sztanozs
#1856
üzenetére
Látom nem értitek mi a problémám.
Ha UNIX-ba számolok akkor kapok egy számot.
Tegyük fel van két dátum UNIX formátumba, egy jelen idő, és egy jövő idő.
A jövő idő egy nagyobb szám UNIX formátumba.
Azért nagyobb szám, mert az UNIX 1970. január 1. 00:00:00 számolja az időt.Ha a nagyobb UNIX számból(jövő időből) kivonom kisebb UNIX számot(jelen idő) kapok egy értéket.
Ha azt a külömbségből létrejött UNIX értéket alakítom át dátummá UNIX_TIMESTAMP() függvénnyel akkor 1970. január 1. 00:00:00 közeli dátumot kapok mert az onnét számolja.Különbséget kéne átalakítani, valahogy.
-
Jester01
veterán
válasz
bbTamas77
#1853
üzenetére
A probléma az, hogy két időpont között ebben a formában lehet, hogy azonos eredményt kapsz amikor különböző időtartam volt valójában, hiszen az év illetve a hónapok hossza különbözhet.
Ha valami 1 hónapja volt, az függ attól az előző hónap milyen hosszú volt. Ha ez neked jó, akkor nincs gond. -
bbTamas77
aktív tag
válasz
Jester01
#1852
üzenetére
Szia,
phpMyAdmin Verziószám: 3.5.2.2
A kérdés feltétele előtt probálgattam UNIX_TIMESTAMP() függvényt UNIX_TIMESTAMP() is aztán arra jutottam, valahol itt van a megoldás.
Idébélyegző formátumába is lehet, vagy ha lehet másképp(?), a lényeg az, hogy kitudjak hozni a két közötti eltelt időt ilyen formátumba:
ÉÉÉÉ-HH-NN ÓÓ:PP:MM
pl: A két időpont közötti eltelt idő 1év 1hónap 1nap 01 óra 01 perc 01 másodperc
Azért kell, mert SELECT DATE_ADD(NOW() meghatározok egy jövő időt azt átalakítom idébélyegző formátumába, az odáig megvan.
Viszont a jelen, és az adott x jövő időpont ha nem haladtuk el a jövő időpontot akkor kikéne számolni, hogy mennyi év hónap nap óra perc másodperc van vissza.
Vagy nagyon kéne egyszerűen és hatékonyan megoldani?
-
bbTamas77
aktív tag
Üdv.
Hogyan kaphatom meg sql-ben, két dátum között eltelt időt?
Van egy jövö dátum ÉÉÉÉ-HH-NN ÓÓ:PP:MM és egy jelen dátum ÉÉÉÉ-HH-NN ÓÓ:PP:MM formátumban.
A kettő időpont közi időt szeretném megkapni ÉÉÉÉ-HH-NN ÓÓ:PP:MM-ba. -
DS39
nagyúr
válasz
martonx
#1849
üzenetére
teljesen felesleges újra feltalálni a spanyol viaszt. az SQL Server Business Intelligence része egy igen professzionális riportoló eszközt (Reporting Services) tartalmaz.
remek dinamikus (paraméter szerinti) táblázatok, és diagramok készíthetők vele [link]
az email-ben kiküldés kicsit macerás, de ahogy alább linkeltem megoldható.
-
martonx
veterán
válasz
Petya25
#1847
üzenetére
Írsz rá egy kis programocskát, aztán az pont ezt fogja tudni, legalábbis a táblázat részéig elég triviális.
Az más kérdés, hogy diagramm nehezen lesz benne, bár kerülő utakkal biztos tudsz diagrammot képként generáltatni valamilyen eszközzel, és a képet már bele tudod szúrni a html formátumú emailbe. -
Petya25
őstag
Kéne nekem valami olyan riportoló eszköz, ami MS SQL-ből olvasna és táblázatot, diagrammot tudna kitolni ügyfelnként mélben, amiben mindenki a maga adatait kapná csak.
Van rá valami ötlet? -
Ispy
nagyúr
Ha MDB, akkor ezt nézd meg.
-
retes
aktív tag
válasz
martonx
#1839
üzenetére
Azt próbálom, csak adott közben egy ilyen feladat amit szeretnék megoldani, csak nem tudom, hogy az Access egyáltalán tud e olyat csinálni, hogy mikor indítok egy lekérdezést, akkor feldob egy ablakot, hogy írjam be neki a tól-ig et. Másfelől meg szerintem, az "egy minimális Access tudást illene magadra szedni, mielőtt kérdezel." nagyon kedves és segítőkész hozzáállás. martonx őstagként azt hinném, hogy ezt a látásmódot ezzel a titulussal sikeresen magadra szedted már mióta a PH-ra írogatsz. Látszik, hogy nem sikerült, viszont tedd meg, ha már nem vagy hajlandó segíteni, ne is gátold, hogy más építő jelleggel szóljon hozzá és inkább ne is írj. Köszönöm!
-
retes
aktív tag
Sziasztok!
Olyan segítségre lenne szükségem, hogy adott egy sima Access, amiben egy táblában egy adott oszlopra szeretnék úgy lekérdezést készíteni, hogy mikor lefuttatom, akkor kérje be a kezdő és a vég értéket. Vagyis tetszőleges tartományt kérjek le. Szóval ha az oszlop 1,2,3,4,5,6,7,8 akkor meg tudjam adni, hogy nekem a 3 és a 6 köztieket dobja ki.
Tudna valaki segíteni, hogy ezt hogyan lehet elérni Accessben.
Előre is nagyon köszönöm a segítséget! -
-
bpx
őstag
igen, es ez az, ami nincs sajnos
ami van, ahhoz kell korites, es tudni kell, mit fog visszaadni a query
ugyanez van Oracle-ben is, EXECUTE IMMEDIATE-tel kb. akarmit vegre lehet hajtani, de csak PL/SQL-ben, es ha van kimenete, ahhoz bizony programozni kell, hogy lassak belole valamit
ha meg elore nem ismert a kimenet strukturaja, hat hagyjuk...
az sp_executesql ahogy nezem, az is ugyanilyennem tudom mekkora az adathalmaz, es hogy kritikus folyamat, vagy eleg az "egyszer fusson le es kesz", de erre a legegyszerubb modszer szerintem mindenfele eval kinlodas nelkul, hogy nem az adatbazisban rakom ossze a query-t dinamikusan es futtatok mindent, hanem a kliens (pl. egy shell script) elkeri a futtatando query-ket es szepen beadagolja
pl. van egy script, ami lekeri a queryket, es futtatja oket psql-el, a kimenetet meg kitolja mondjuk CSV fajlba (vagy amibe kell)
vegen meg a fajlokra mehet a grafikon generatornem tul szep, de legalabb egyszeru
-
válasz
martonx
#1833
üzenetére
de nem akarom a query recordjain végiglépkedni, mert egy query-m van.
van egy táblám, van benne n darab query. ezekből a querykből mindig pontosan egyre van szükségem, sem többre, sem kevesebbre. pontosan egy elemű for ciklust futtatni nem látszik hasznosnak. majd egy másik, későbbi időpontban egy másik queryre van szükségem, de akkor is csak pontosan egyre.(#1834) Ispy

-
Ispy
nagyúr
válasz
martonx
#1833
üzenetére
Még mindig nem érted:
olyan utasítást keres, amivel egy táblában található utasítást tud futattni kódból, mssqlben ilyen az sp_executesql függvény, vagy visual basicben az eval függvény. Tehát, ha végiglépked egy forral, akkor a for belsejében kell egy függvény, ami a ciklus által visszaadott értéket tudja nativ kódként értelmezni. -
martonx
veterán
"mindig egy query lesz az eredmény, azt kell futtatni.
Erre elvileg (postgrestől elvonatkoztatva) két módszer létezhet:
- van készen eval függvény
- tárolt eljárást kell rá írni."Akkor csak jól értettem. Postgrestől esetedben éppen hogy nem lehet elvonatkoztatni, mert pl. MySQL-lel, vagy MSSQL-el (de gondolom Oracle-lel is, bár azzal nincs sok tapasztalatom) simán futtathatnád tárolt eljárás nélkül is a kapott query-det.
Az eval-t javascriptből ismerem, tudtommal SQL-ekben ilyen nyelvi elem nincs (hacsak nem oracle-ben), az hogy egy programnyelvben mit hogy oldasz meg, teljesen irreleváns SQL-ben fejlesztéskor.A problémádat még mindig nem értem teljesen, de végiglépdelni egy query recordjain, amelyekben szintén query-k vannak legenerálva, és ezeket a queryket egymás után futtatni, továbbra is azt mondom, hogy a FOR egy megfelelő megoldás lehet.
-
válasz
martonx
#1831
üzenetére
a probléma a következő: van egy halom mérési eredményem. ebből csinálni kell egy halom grafikont. a grafikon legyártása gyakorlatilag ugyanolyan lépésekből áll, kivéve, hogy az adatsort, amiből lesz, más-más query-k adják. ezért gondoltam arra, hogy a különbözőséget jelentő queryket belerakom egy táblába, a többihez írok egy darab scriptet, aminek egy paramétere, hogy hanyadik query-s grafikont csinálja meg és azt futtatom.
ehhez kellene egy olyan, amit más programozási nyelvekben evalnak szoktak hívni, hogy összerakom valahogy egy stringbe a queryt és azt ugyanúgy feldolgoztatom, mintha simán beírt query lenne.
"Úgy értettem, hogy egy query eredményeként kigenerálsz egy rakás SQL query-t, és ezeket szeretnéd egymás után futtatni programozottan.": mindig egy query lesz az eredmény, azt kell futtatni.
Erre elvileg (postgrestől elvonatkoztatva) két módszer létezhet:
- van készen eval függvény
- tárolt eljárást kell rá írni.A postgresben nincs eval függvény, meg más sem, amire hunyorítva nézve eval függvény lehetne, ezért ez az út járhatatlan.
A postgresnek a tárolt eljárási környezetében van olyan, hogy visszatérési eredményként egy query által generált táblát adok vissza, de ezzel az a probléma, hogy a tárolt eljárás definíciós részében meg kell adni a tábla formátumát, hogy milyen rekordtípust fog visszaadni, az pedig nem egyforma. Így nem tudom a tárolt eljárásban a return query exec-et használni.
-
martonx
veterán
válasz
bambano
#1830
üzenetére
Lehet, hogy félreértettelek. Úgy értettem, hogy egy query eredményeként kigenerálsz egy rakás SQL query-t, és ezeket szeretnéd egymás után futtatni programozottan.
Hja, normálisabb SQL nyelvekben ehhez nem kell tárolt eljárás, PostgreSql-ben valóban kell (bár mintha 9.1 / 9.2 újdonsága lenne, hogy immár tárolt eljáráson kívül is lehet benne magasabb szintű nyelvi elemeket is használni)
Kettes kérdésedet nem tudom értelmezni, lehet azért mert még mindig nem értem, hogy mit is szeretnél?
Hármas kérdésedre sem tudok válaszolni. Ha van, akkor használd azt. Öröm - boldogság. Ha nincs, akkor örülök, hogy segíthettem a for-os ötletemmel.Azért végezetül megpróbálnád összefoglalni, hogy mit is szerettél volna, és végül mi lett a legegyszerűbb megoldás?
-
válasz
martonx
#1829
üzenetére
Három dolgot nem értek a válaszodban:
- függvényt kerestem volna eredetileg, ez meg tárolt procedúrában egy vezérlési szerkezet
- attól, hogy for-ral dolgozom fel a query eredményét, hogyan fog változni a tárolt procedúra által visszaadott adatok típusa?
- miért kellene for-t használnom arra, amire van beépített kész utasítás?tartok tőle, nem ugyanazt értettük a kérdésem alatt.
-
-
válasz
Speeedfire
#1824
üzenetére
execute vagy pl/pgsql scriptben van, vagy prepared statementben. Ez utóbbi esetben nem így kell meghívni, hanem a nevével és a paramétereivel.
a pl/pgsql scripttel azért nem bírtam még zöldágra vergődni, mert nem lehet tudni előre, hogy milyen formátumban adja vissza a táblát az exec, de azt előre bele kellene drótozni a scriptbe. pech.
-
válasz
Speeedfire
#1822
üzenetére
én úgy látom, hogy itt a from query-ben megadott select eredményét hozza ki, nem pedig a megadott select lefuttatásával kapott eredményt.
de lehet, hogy elgépeltem valamit, nem tudom.
-
kellene gyors segítség: postgresql-ben van valami eval vagy exec szerű függvény? valami ilyen kellene, hogy:
select * from eval (select sql_command from table where id=1);
egy halom grafikont kellene legyártanom, és utálnám, ha kézzel kellene. tia.
-
Speeedfire
félisten
válasz
Apollo17hu
#1819
üzenetére
Sok rekordnál én sem tudom melyik lenne jobb performanciában. Egyelőre marad a pivot, ha lassú lesz idővel akkor megnézem a többi eshetőséget is.

-
Apollo17hu
őstag
válasz
Speeedfire
#1818
üzenetére
Igen, ugyanazt az eredményt hozza a kettő, de azért írtam be, mert a pivotot talán nehezebb "testreszabni" nagyobb mátrixoknál.
-
Speeedfire
félisten
-
Apollo17hu
őstag
válasz
Speeedfire
#1811
üzenetére
vagy:
SELECT id
,MIN(CASE
WHEN lang = 'hu' THEN
mess
END) AS "hu"
,MIN(CASE
WHEN lang = 'en' THEN
mess
END) AS "en"
FROM tabla
GROUP BY id -
Ispy
nagyúr
válasz
Speeedfire
#1815
üzenetére
Nem is kell oda, vedd ki belőle

select * from message
pivot
(
max(translation)
for(language) in (hu, en, de)
) pivotmess; -
Ispy
nagyúr
válasz
Speeedfire
#1813
üzenetére
select * from (select * from message) message
helyett elég ez is:
select * from message
-
Ispy
nagyúr
válasz
Speeedfire
#1811
üzenetére
Ha MS SQL, akkor igen.
-
Speeedfire
félisten
Adott egy tábla:
id | lang | mess
1 | hu | valami
1 | en | envalami
2 | hu | megvalami
2 | en | enmegvalami
3 | hu | otLe lehet ezt kérdezni úgy, hogy ilyen formában kapjam vissza?
id | hu | en |
1 | valami | envalami
2 | megvalami | enmegvalami
3 | ot | - -
Speeedfire
félisten
válasz
Peter Kiss
#1809
üzenetére
Valóban, így is megy.

-
Peter Kiss
őstag
válasz
Speeedfire
#1808
üzenetére
Fentiból hiányzik egy from comment, mindegy.
Sub query nélkül is lehet:
select t.id, t.name, MAX(s.create_time) as order
from forum t
left join comment s on t.id=s.forum_id
group by t.id, t.name
order by MAX(s.create_time) desc -
Speeedfire
félisten
válasz
Peter Kiss
#1807
üzenetére
Köszi!

Sejtettem, hogy subselect nélkül nem fog menni.

-
Peter Kiss
őstag
válasz
Speeedfire
#1804
üzenetére
select *
from forum t
left join (select forum_id, MAX(create_time) as lastTime group by forum_id) as s
on t.id=s.forum_id
order by s.create_time desc -
Speeedfire
félisten
válasz
Apollo17hu
#1805
üzenetére
Csak az időbélyeg érdekel, maga a comment nem.
pl
select t.*, s.create_time as order
from forum t
left join comment s
on t.id=s.forum_id
order by order desc -
Apollo17hu
őstag
válasz
Speeedfire
#1804
üzenetére
Úgy akarod, hogy a lekérdezésed eredménye az legyen, hogy:
minden fórumazonosító (id) egyszer, ezekhez pedig a legutolsó (=legfrissebb) komment (comment), és a hozzá tartozó create_time érték? Ha igen, akkor kell bele a comment mező is vagy elég csak az időpecsét? -
Speeedfire
félisten
Adott 2 tábla egyikben forum leírások vannak, a másikban pedig a fórum hozzászólások.
forum:
----------
id | titlecomment:
---------------
forum_id | comment | create_timeOlyan lekérdezés lenne a célom ami kilistázza az összeset a fórum táblából és az ordernek a comment tábla create time értéke lenne.
select *
from forum t
left join comment s
on t.id=s.forum_id
order by s.create_time descEnnél a lekérdezésnél jó is lehetne, csak a commentek miatt többször is listázza ugyan azt a fórum leírást.
Ha rakok rá egy group by-t, akkor pedig nem jó az order.
Valakinek valami tippje? Csináljak egy subselect-et?
Vagy lehet join-nal is, csak épp nem így.
-
válasz
Peter Kiss
#1801
üzenetére
View vagy a valódi tábla, egyre megy - ha nem kapott a táblára select jogot (feltételezem úgy, hogy kért), akkor nem valószínű, hogy fognak neki csinálni egy view-t...
-
Peter Kiss
őstag
válasz
dellfanboy
#1795
üzenetére
Amit te keresel, azt úgy hívják, VIEW. Ha azokkal a táblákkal kellene dolgoznod, kérj egy VIEW-t. Ekkor a VIEW-hoz adnak hozzá, nem a TABLE-hoz SELECT permission-nel.
Új hozzászólás Aktív témák
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- KÉSZLETKISÖPRÉSI KARÁCSONYI ULTRAAKCIÓ! - MacBook Air M4 16GB 256GB Garancia!
- Bomba ár! HP EliteBook 840 G6 - i7-8GEN I 16GB I 512GB SSD I 14" FHD I HDMI I Cam I W11 I Gari!
- 182 - Lenovo Legion 5 (15IRX10) - Intel Core i9-14900HX, RTX 5070 (ELKELT)
- iKing.Hu-Nothing Phone 3a Pro Grey Glyph stílus, 3 optikai zoom 12/256 GB -3 hónap garancia
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi








![;]](http://cdn.rios.hu/dl/s/v1.gif)






