Autor Zpráva
r0me0
Profil
Ahoj,
mohl by i prosím někdo pomoc s dotazem? Řešil jsem to tu v tomto vlákně: http://diskuse.jakpsatweb.cz/index.php?action=vthread&topic=80944&foru m=28&page=-1
Kajman_
Profil *
http://www.linuxsoft.cz/article.php?id_article=827
Plus navazující případně všechny předcházející články.
bohyn
Profil *
Doporucil bych predelat spojovaci tabulku jen na ciselne indexy a ostatni radky zaclenit to tech dvou ostatnich tabulek.

sampionat - ID sampionatu
zavod - ID zavodu

CREATE TABLE `tab_vztahy` (
`sampionat` int(11) NOT NULL,
`zavod` int(11) NOT NULL,
PRIMARY KEY (`sampionat`, `zavod`)
);

a dotaz upravit na

SELECT samp_jmeno, zav_nazev
FROM (tab_sampionat, tab_zavody, tab_vztahy)
WHERE sampionat = samp_id AND zavod = zav_id
ORDER BY zav_zacatek ASC

PS: To IS NOT NULL nevim proc si tam mel, prece nemas sapionat bez zavodu nebo jo ? To by pak bylo treba pouzit JOIN nebo vnoreny select, ale ten by ti s mysql modulem nebehal, na to bys potreboval mysqli
r0me0
Profil
Kajman_
už to studuji... díky

bohyn
To IS NOT NULL tam je z toho důvodu, že do tabulky vztahů ukládám i vazbu na články, obrázky atd. Takže šampionát může mít řádek v tabulce, kde bude závod NULL ale bude tam třeba název článku, nebo obrázku. Vím, že by tam měly být jen číselné indexy, na to jsem přišel až moc pozdě a teď se mi nechce překopávat celá aplikace. Díky za reakci
r0me0
Profil
pro případné zájemce dotaz je takto:

SELECT vz_zavod
FROM tab_vztahy As V
LEFT JOIN tab_zavody As Z
ON V.vz_zavod = Z.zav_nazev
WHERE vz_sampionat = '$nazev' AND vz_zavod IS NOT NULL
ORDER BY Z.zav_zacatek

nevím proč, ale házelo mi to chybu, když sem psal za SELECT např. tab_vztahy.vz_zavod , že to nezná ten sloupec...
nightfish
Profil
nevím proč, ale házelo mi to chybu, když sem psal za SELECT např. tab_vztahy.vz_zavod , že to nezná ten sloupec...
když nějaké tabulce přiřadíš alilas, musíš jej použít i při určování názvu sloupce
správně tedy
SELECT V.vz_zavod FROM ...
r0me0
Profil
nightfish
aha, super, díky :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0