Autor Zpráva
Jey__
Profil
Zdravím,

Mám dvě následující tabulky:

*Table1 (tabulka s produkty)
-id_product
-name

*Table2 (tabulka s fotkami produktů (k jednomu produktu může být více fotek))
-id_foto
-id_product
-poradi (může se v tabulce opakovat)

Potřeboval bych vypsat všechny produkty vzestupně podle table1.id_product a ke každému produktu přiřadit pouze jednu fotku, která má nejmenší hodnotu ve sloupci PORADI.

Pomoci následujícího selectu mi to funguje, ale nevypíše mi produkty u kterých není přiřazená fotografie, ale já potřebuji vypsat i produkty bez fotografie.

SELECT a.id_product, b.foto
FROM table1 as a
LEFT JOIN table2 as b ON b.id_product = a.id_product
WHERE  
b.id_foto =
	(
	SELECT id_foto
	FROM table2
	WHERE id_product = a.id_product
	ORDER BY poradi ASC
	limit 1
	)
GROUP BY a.id_product
ORDER BY a.id_product ASC


Předem všem děkuji za pomoc!
tiso
Profil
SELECT a.id_product, b.foto
FROM table1 as a
LEFT JOIN table2 as b ON b.id_product = a.id_product
WHERE  
ISNULL(b.id_foto) OR
b.id_foto =
    (
    SELECT id_foto
    FROM table2
    WHERE id_product = a.id_product
    ORDER BY poradi ASC
    limit 1
    )
GROUP BY a.id_product
ORDER BY a.id_product ASC
Jey__
Profil
tiso:
Úžasný! Funguje, děkuju moc!
Kajman_
Profil *
Nebo celou tu podmínku nedávat do where ale připojit do on u left joinu.
Jey__
Profil
Kajman:
To mě taky napadlo, ale nepovedlo se mi to nejika zrealizovat, mysliš, že bys to tu mohl napsat?
Kajman_
Profil *
V původním dotaze by mělo stačit přepsat where za and.
Jey__
Profil
Kajman:
V původním dotaze by mělo stačit přepsat where za and.
Taky funguje, děkuji to bude asi lepší řešení

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: