Autor | Zpráva | ||
---|---|---|---|
Jey__ Profil |
#1 · Zasláno: 26. 10. 2009, 01:06:30
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 |
#2 · Zasláno: 26. 10. 2009, 01:27:07 · Upravil/a: tiso
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 |
#3 · Zasláno: 26. 10. 2009, 03:11:07
tiso:
Úžasný! Funguje, děkuju moc! |
||
Kajman_ Profil * |
#4 · Zasláno: 26. 10. 2009, 08:20:25
Nebo celou tu podmínku nedávat do where ale připojit do on u left joinu.
|
||
Jey__ Profil |
#5 · Zasláno: 26. 10. 2009, 11:24:07
Kajman:
To mě taky napadlo, ale nepovedlo se mi to nejika zrealizovat, mysliš, že bys to tu mohl napsat? |
||
Kajman_ Profil * |
#6 · Zasláno: 26. 10. 2009, 12:26:07
V původním dotaze by mělo stačit přepsat where za and.
|
||
Jey__ Profil |
#7 · Zasláno: 26. 10. 2009, 18:33:48
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í |
||
Časová prodleva: 15 let
|
0