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 |
||
Jan Tvrdík Profil |
#3 · Zasláno: 13. 3. 2013, 15:36:44
Peet:
Mně se to zdá na první pohled v pořádku. Proč se domníváš, že to nefunguje? |
||
Peet Profil |
#4 · Zasláno: 13. 3. 2013, 15:40:10 · Upravil/a: Peet
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 |
#5 · Zasláno: 13. 3. 2013, 16:23:49
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. má byť ON U.id = I.user_id
|
||
Peet Profil |
#6 · Zasláno: 13. 3. 2013, 16:35:22
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 |
||
Časová prodleva: 11 let
|
0