Autor Zpráva
jrw
Profil
potřeboval bych vložit do tohoto dotazu distinct tak aby vracel jen jedinečné řádky

select distinct
reference.id_reference as reference_id_ref,
substr(reference.nadpis, 1, 40) as nadpis,
reference.typ_stavby as typ_stavby,
reference.investor as investor,
reference.objem as objem,
reference.datum as datum,
year(reference.datum) as rok,
fotky.id_fotky,
fotky.id_reference,
fotky.mala_fotka as mala_fotka
from reference left join fotky on reference.id_reference = fotky.id_reference
where reference.datum = '$rok'

když to dám na začátek za select tak to nefunguje, nevíte jak to funguje v případě složených dotazů?

Díky
Kajman_
Profil *
Takto to bude vracet jedinečné řádky. Neměly by se tam nikdy vyskytnou takové, které mají všechny vypisované sloupečky stejné.
jrw
Profil
No on tento dotaz asi vrací to co má ale "chyba" je někde jinde. Mám dvě tabulky 'reference' a 'fotky'

CREATE TABLE reference (
id_reference int(11) NOT NULL auto_increment primary key,
nadpis varchar(250),
typ_stavby varchar(100),
investor varchar(100),
objem varchar(100),
datum date,
popis text,
ts timestamp
)

CREATE TABLE `fotky` (
id_fotky int(11) NOT NULL auto_increment primary key,
id_reference int(11),
mala_fotka varchar(250),
velka_fotka varchar(250),
jmeno varchar(250),
popis text,
pred_po varchar(10),
ts timestamp
)

a chtěl bych vypsat všechny řádky z tabulky 'reference' a ke každému řádku jednu fotku z tabulky 'fotky' která patří ke konkrétnímu řádku z referencí. Problém je že mi to sice správně vypisuje řádky z 'referencí' ale pokud je ve 'fotkách' více fotek k jednomu řádku z 'referencí' tak se vypíšou všechny. Doufám že jsem to nepopsal moc zmateně ale nevím si s tím rady.
Kajman_
Profil *
Osobně bych si asi do fotek přidal sloupeček, že ona fotka je ta jediná, která se má zobrazit jako náhled. Pak by se podmínka na tento sloupeček přidala do on při left joinu.

Pokud chcete např. vždy nejstarší fotku, tak to může být asi takto

select
reference.id_reference as reference_id_ref,
substr(reference.nadpis, 1, 40) as nadpis,
reference.typ_stavby as typ_stavby,
reference.investor as investor,
reference.objem as objem,
reference.datum as datum,
year(reference.datum) as rok,
fotky.id_fotky,
fotky.id_reference,
fotky.mala_fotka as mala_fotka
from reference left join (select f.* from fotky f where f.id_fotky in (select min(id_fotky) from fotky group by id_reference)) fotky on reference.id_reference = fotky.id_reference
where reference.datum = '$rok'
jrw
Profil
Díky, zkusím se v tom nějak zorientovat.

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: