Autor | Zpráva | ||
---|---|---|---|
Fic Profil |
#1 · Zasláno: 20. 3. 2010, 14:16:11
Ahoj, mám následující problém:
MYSQL dotaz: SELECT * FROM plants LEFT JOIN pictures USING (plant_id) WHERE genus REGEXP '^[$from-$to]' AND bcs='$bcs' ORDER BY genus, species LIMIT $start,$page_size Vybírám data z tabulky plants, kde je obrázek, přiřadí se obrázek a následně z toho vezmu jen 15 záznamů (tolik se jich zobrazí na web. stránce, stejné záznamy pomocí php sjednotím v jeden a zobrazím příslušné obrázky). Problém je v tom, že pokud mám u některé položky obrázky dva, jsou tam potom dva stejné záznamy s různým obrázkem, takže místo 15 různých záznamů se jich vybere defacto jen 14. Největší problém potom nastane, když 15 a 16tá položka má stejné id, liší se jen o obrázek, takže se na webové stránce zobrazí na 1. i na 2. stránce, pokaždé s jiným obrázkem. Potřeboval bych nějak dostat LIMIT nad LEFT JOIN, jde to nějak? Nechci používat GROUP BY, protože bych musel přepisovat i funkce v PHP, ale pokud myslíte, že by to bylo efektivnější? Nebo je ještě nějaké jiné řešení? Díky za odpověď. |
||
tiso Profil |
#2 · Zasláno: 20. 3. 2010, 14:22:23 · Upravil/a: tiso
Otázne je čo chceš vlastne vypísať? Jednu stránku z plants so všetkými obrázkami? Alebo jednu stránku z plants s jedným obrázkom?
|
||
Fic Profil |
#3 · Zasláno: 20. 3. 2010, 14:42:56
Vypíšu stránku, kde by mělo být 15 položek z Plants (15 RŮZNÝCH, tj. s různým plant_id) a k nim související obrázky, které vybírám z pictures na základě plant_id. Řekněme, že co nové plant_id, to nový řádek, pokud jsou za sebou stejná plant_id, tak obrázky hodím do řádku stejného (přes php). Věc je ta, že když udělám LEFT JOIN a chci mít 15 různých záznamů na stránce a u 1 položky budou obrázky dva, potřebuju tedy potom vybrat záznamů 16 - s čímž si nevím rady ($page_size udává počet záznamů na stránku, $start odkud začít).
|
||
Kajman_ Profil * |
#4 · Zasláno: 20. 3. 2010, 16:05:11
SELECT * (SELECT * FROM plants WHERE genus REGEXP '^[$from-$to]' AND bcs='$bcs' ORDER BY genus, species LIMIT $start,$page_size) t LEFT JOIN pictures USING (plant_id) ORDER BY genus, species |
||
Časová prodleva: 14 let
|
0