Autor Zpráva
Jakuje
Profil
Dá se nějak slušně nastránkovat SQL dotaz s JOINem? LIMIT moc dobře nejde, protože to vrací všechno z "poddotazu", ale já bych rád aby to nějak limitovalo pouze hlavní tabulku.

Omlouvám se, jestli se to tu už někde řešilo.

Příklad:

SELECT * FROM catalog LEFT JOIN images ON catalog.img = images.cid LIMIT 0,4


Jde o to jestli se to dá nějak ošmelit v dotazu, nebo musím udělat ještě jeden a nebo sis tím hrát v PHP
Alphard
Profil
můžeš uvést příklad?

podle mě by měl tvůj dotaz vypsat 4 záznamy z tabulky catalog a najít k nim související záznamy z images
Jakuje
Profil
No, jnže ono to limituje kombinace catalog a jmages, takže to vrací jeden řádek z catalog 4x a k tomu pokaždé jiný obrázek. Toť zvyk JOINŮ co vím ...
bukaj
Profil
Jakuje
No, jnže ono to limituje kombinace catalog a jmages, takže to vrací jeden řádek z catalog 4x a k tomu pokaždé jiný obrázek. Toť zvyk JOINŮ co vím ...
To ale dělá INNER JOIN, co vím...
Alphard
Profil
aha, jiná struktura, než jsem předpokládal

takže je potřeba vypsat 4 záznamy z catalog a k tomu všechny z images, tedy třeba 10 řádků?
Jakuje
Profil
je potřeba vypsat 4 záznamy z catalog a k tomu všechny z images, tedy třeba 10 řádků?
jj. Nějak tak ... už jsem s tím měl problémy několikrát ...
mila
Profil
SELECT * FROM catalog LEFT JOIN images ON catalog.img = images.cid WHERE catalog.id in (SELECT id from catalog LIMIT 0, 4)

nebo
SELECT * FROM (SELECT * from catalog LIMIT 0, 4) as catalog LEFT JOIN images ON catalog.img = images.cid 
Jakuje
Profil
Díky. Až se k tomu dostanu, tak to zkusím. Myslím že jsem kdysi zkoušel něco s tím podvýběrem a házelo to nějakou chybu, ale jak říkám, uvídí se ...
Jakuje
Profil
SELECT * FROM catalog LEFT JOIN images ON catalog.img = images.cid WHERE catalog.id in (SELECT id from catalog LIMIT 0, 4)

- Vrací chybu: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

nebo

[pre]SELECT * FROM (SELECT * from catalog LIMIT 0, 4) as catalog LEFT JOIN images ON catalog.img = images.cid[pre]
- Funguje. Nevím jak, ale ano. Moc díky. Konečně vím jak řešit stránkování v MySQL dotazu ... díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: