Autor Zpráva
Peet
Profil
Dobrý den, zaboha nemohu přijít na jedno řešení asi pomocí JOIN nebo nevím jak jinak ale studuji to tu už 2 hod a snažím se udělat následující

mám dvě tabulky USER a USER_INFO

a v tabulce USER mam id,city_id (z jakého je města) a v tabulce USER_INFO mam user_id,smoke(1/0) jestli je kuřák.

nyní potřebuji vypsat ty uživatele kteří mají například city_id=10 a smoke=1

zkoušel jsem toto:
SELECT id FROM users, user_info WHERE users.id=user_info.user_id AND users.city_id=10 AND user_info.smoke=1 ORDER BY id DESC;

ale toto prostě nefunguje.
Someone
Profil
SELECT id
FROM users U
    LEFT JOIN user_info I
    ON U.id = I.user_id
WHERE U.city_id = 10 AND I.smoke = 1
[#5] díky, opraveno
Jan Tvrdík
Profil
Peet:
Mně se to zdá na první pohled v pořádku. Proč se domníváš, že to nefunguje?
Peet
Profil
vrací mi 0 výsledků ale možná je tam chyba ještě někde jinde se spojováním tabulek jsem se seznámil dnes tudíž než hledat chyby jinde jsem se chtěl ujistit jestli to vůbec takto funguje a jestli to chápu.

jen se ještě zeptám jaký je rozíl mezi tím prvním nebo tím když použiji JOIN ?

a je vůbec rozdíl mezi LEFT JOIN a RIGHT JOIN všude se píše že to je spojení tabulek zleva nebo zprava, ale co to vlastně znamená ?


jo a ještě když potom přistupuji přes php k jednotlivým výsledkům například k tomu id musím napsat $result['id'] nebo $result['U.id'] ??
tiso
Profil
Peet: malo by to fungovať, teda za predpokladu, že USER a USER_INFO znamená users a user_info
Someone tam má chybu ON U.id = I.user_info má byť ON U.id = I.user_id
Peet
Profil
jojo vše funguje :) té chyby jsem si všiml ale pochopil jsem co chtěl říct ;) měl by někdo odpovědi ještě na ty otázky ?
Kajman
Profil
Peet:
měl by někdo odpovědi ještě na ty otázky ?

Stačí takto?
http://www.linuxsoft.cz/article.php?id_article=837
http://www.linuxsoft.cz/article.php?id_article=841

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: