Autor Zpráva
luma64
Profil
Ako ma pls spravne vyzerat left join v selecte v php stranke ak mam 3 tabulky. Skusal som to v mysql ale nezobrazovali mi pozadovane hodnoty
select h.*, r.dlzka_minuty, p.poznamka from opsaly_pacient h, rozvrh r, opsaly_poznamka p
where h.skratka='..hodn_skratka...' and r.sub_id='..hodn_epz..' and r.skratka=h.skratka
and h.epiz=r.sub_id and p.epiz=r.sub_id and p.skratka='..hodn_skratka...' and p.skratka=r.skratka ;
Tori
Profil
luma64:
Co to má dělat - ke každému záznamu z tabulky h najít jeden nebo víc řádků z osatních tabulek? Které sloupce se v tabulkách používají jako primární / cizí klíče?
resp.: jaký dostanete výsledek a jaký chcete získat?
luma64
Profil
K tabulke h ma dotiahnut udaje z tabulky r a poznamku z tabulky p. Selektom sa zobrazi vzdy iba o jeden zaznam. Ak poznamka neexistuje nevypise sa ani jeden zaznam.
Primarne kluce:
tbl r je to tbl_id
tbl h je to epiz
tbl p id a epiz
Tori
Profil
Když to změním do trochu (pro mě) čitelnější podoby, dostanu:
select h.*, r.dlzka_minuty, p.poznamka 
from opsaly_pacient h
inner join rozvrh r on r.skratka = h.skratka and h.epiz = r.sub_id
inner join opsaly_poznamka p on p.epiz = r.sub_id and p.skratka = r.skratka
where h.skratka='..hodn_skratka...' and r.sub_id='..hodn_epz..' and p.skratka='..hodn_skratka...'
Pokud je v obou zvýrazněných částech stejná hodnota, tak jedna z nich je nadbytečná (h.skratka == r.skratka == p.skratka). table1, table2 je totéž jako table1 inner join table2, jen má nižší prioritu. Zřejmě je potřeba některý nebo oba joiny změnit na left join (podle toho, která data mohou chybět).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0