Autor Zpráva
Fic
Profil
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
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
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 *
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 

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:

0