» »

MYSQL vprašanje

MYSQL vprašanje

l0g1t3ch ::

Sedaj imam narejen SQL stavek ki za nek ID skupine poišče zadnje tri vnose za to skupino, ker pa je skupin več vse skupaj izvajam v zanki kjer menjam ID in izvajam sql da grem čez vse skupine.

Pa me zanima če se da to stlačit v en sam SQL da bi za vsako od skupin poiskal zadnje 3 vnose.

Hvala
  • spremenil: l0g1t3ch ()

alien01 ::

'sql stavek' ORDER BY id_vnos DESC LIMIT 3; ?

Zgodovina sprememb…

  • spremenil: alien01 ()

l0g1t3ch ::

SELECT * FROM tabela WHERE id = nekaCifra ORDER BY created DESC LIMIT 3;


In to zdej izvajam v for zanki vsakič drug id da grem vse id-je čez. Verjetno pa obstaja boljša/lepša rešitev.

alien01 ::

Mogoče ti bo tole pomagalo. :|

l0g1t3ch ::

Hvala, pomoje bo pomagalo.

l0g1t3ch ::

Kakšna je razlika med tem:
FROM tabela1, tabela2, tabela3
in tem:
FROM tabela1
JOIN tabela2 ON ...
JOIN tabela3 ON ...

schtr4jh ::

SELECT * FROM tabela1 t1, tabela t2, tabela t3 WHERE t1.id = t2.id AND t2.id = t3.id
naredi enako, kot
SELECT * FROM tabela t1 INNER JOIN tabela2 t2 ON t1.id = t2.id INNER JOIN tabela3 t3 ON t2.id = t3.id

Pazi na where stavek v prvem queryu.

Če pa where stavka ni, dobiš dejansko povezane vse vrednosti za vsemi vrednostmi iz ostalih tabel, ker ne določiš, glede na kaj se naj "joinajo".

unit3d ::

Pozdrav, imam en čist banalen problem, ki ga rešujem že celo popoldne, pa še kr nisem prišel do rešitve. Napisati poskušam sql povpraševanje, ki iz neke določene tabele izloči id, ki se pojavi največkrat ter potem iz druge tabele prebere podatke, ki so vezani na ta id. Moja težava je, da se zgubim že pri izpisu tistega id-ja v prvi tabeli.

MrBrdo ::

unit3d:
ups narobe zastopil vprašanje :P PS: mal maš čudno poimenovanje, po vsej logiki bi se moral isti "id" pojavit samo 1x...

mogoče bi kej takega delal:
SELECT id, COUNT(id) as NumOccuernces FROM table GROUP BY id ORDER BY NumOccuernces DESC LIMIT 1
si pa upam rečt da obstaja boljši način

da vzameš podatke še iz neke druge tabele bi potem verjetno moral nest-at query al bi pa šlo celo kej v tem smislu (sam bi blo pomoje počasnejše):
SELECT t1.id, t2.polje1, t2.polje2, COUNT(t1.id) as NumOccuernces FROM table AS t1 LEFT JOIN table2 as t2 ON t1.id = t2.id GROUP BY id ORDER BY NumOccuernces DESC LIMIT 1
MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()

unit3d ::

Aja, pozabil sem napisati, da naj ne bi uporabljal besede "LIMIT", ampak mora biti cel query napisan s pomočjo MAX,COUNT,ORDER BY,GROUP BY,etc.
Razumem, da bo treba gnezdit, vendar želim rešiti ta del. Vsaj kolikor se meni zdi, bo treba tukaj napisati vsaj 3 povpraševanja v enem.

Zgodovina sprememb…

  • spremenil: unit3d ()

MrBrdo ::

unit3d: zakaj pa nočeš z LIMIT?

nevem, lah probaš tko:
SELECT id, COUNT(id) AS cnt FROM table GROUP BY id HAVING (cnt = MAX(cnt))
al pa
SELECT id FROM table GROUP BY id HAVING (COUNT(id) = MAX(COUNT(id)))
nisem ziher če bo to šlo skozi

če hočeš samo 1 rezultat lahko probaš takoj za select dodat še DISTINCT čeprav to lah vse skupaj pokvari :) v glavnem mal moraš probat
MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()

unit3d ::

Celotno zadevo bi naj naredil po primerih, ki so mi bili dani na faksu, vendar so vsa povpraševanja narejena veliko bolj komplicirano kot bi lahko bila.
V bistvu mi nič od tega ne gre skozi ali pa jaz delam kje napako.

Zgodovina sprememb…

  • spremenil: unit3d ()

unit3d ::

Tako kot bi jaz naredil, mi javlja group function is nested too deeply.

MrBrdo ::

nevem no sigurno je z limit to daleč najlažje narest pa verjetno tut najboljše

anyway:
SELECT MAX(cnt) AS a FROM (SELECT COUNT(id) AS cnt FROM table GROUP BY id) AS b
MrBrdo

Zgodovina sprememb…

  • spremenilo: MrBrdo ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[SQL] Unikatni izpisi

Oddelek: Programiranje
211741 (1128) 111111111111
»

[SQL] - združitev glede na iste vrednosti

Oddelek: Programiranje
131051 (693) tx-z
»

[SQL] PgAdmin preprosto vprasanje povezano s stolpci v tabeli

Oddelek: Programiranje
221858 (1217) Cvele2011
»

[Mysql]počasen rand in rešitve

Oddelek: Izdelava spletišč
131125 (882) Tody
»

[SQL] Insert

Oddelek: Programiranje
251745 (1347) greentech

Več podobnih tem