Autor | Zpráva | ||
---|---|---|---|
Richard82 Profil |
Ahoj, mám problém s tímto dotazem.
$select = "SELECT myDate, comment, firstLastName FROM comments, users WHERE comments.id_user = users.id AND id_product='$idProduct' ORDER BY comments.id"; $idProduct = 53 comments id id_user id_product myDate comment 1 22 53 2015-10-15 dsad 2 25 51 2015-10-15 asd 3 25 53 2015-10-15 adsd Místo jednoho výsledku se mi zobrazí 2 a ještě dvojitě, můžete mi poradit? Richard Jahnosik 2015-10-15 he product you do and users have to find Richard Jahnosik 2015-10-15 he product you do and users have to find Omlouvám se, měl by vyhodit 2 výsledky, ale s jiným jménem a comentem. Nevím proč k tomu nedošlo, když propojení tabulek je správně. |
||
juriad Profil |
#2 · Zasláno: 16. 10. 2015, 13:20:08
Vícekrát se zobrazí kvůli tomu JOINu (ve FROM máš dvě tabulky). Prostě jeden uživatel má dva komentáře.
Jelikož jsi neukázal problematický výstup, nevíme, proč by se měl vypsat jen jeden záznam. Databáze vždy vrátí všechny záznamy, které splňují všechny podmínky. |
||
Richard82 Profil |
#3 · Zasláno: 16. 10. 2015, 13:26:17
Asi máš pravdu, ale možná se ptám hloupě, ale selectuji i firstLastName z tabulky users, takže by měla být ve (FROM comments, users).
Musí se zobrazit 2 záznamy, špatně jsem se vyjádřil. Ale druhý záznam má mít jiné jméno a jiný comment. Vysledek je zde Richard Jahnosik 2015-10-15 he product you do and users have to find Richard Jahnosik 2015-10-15 he product you do and users have to find |
||
Joker Profil |
#4 · Zasláno: 16. 10. 2015, 13:28:46
Richard82:
„sql dotaz mi vyhodil spatný výsledek“ Ne. Prakticky vždycky je problém v tom, že SQL dotaz vrací správný výsledek, ale pokládáte špatný dotaz ;-) A tenhle problém může být způsobený i výpisem, tj. možná výpis nenačítá správně údaje jednotlivých záznamů. |
||
Richard82 Profil |
Výpis je v pořádku, tak potom, kde mám chybu v sql dotazu?
Omlouvám se, moje chyba, výpis byl špatný. :( |
||
Keeehi Profil |
#6 · Zasláno: 16. 10. 2015, 16:04:38
Ještě bych rád podotknul, že ten dotaz, ač správný je neefektivní. Nejdřív vytvoří opravdu velkou tabulku, kterou pak filtrem zredukuje na pár záznamů. Bylo by lepší vytvářet rovnou malu tabulku, čehož se dá dosáhnout víceméně jen prostou změnou klíčových slov.
$select = "SELECT myDate, comment, firstLastName FROM comments JOIN users ON comments.id_user = users.id WHERE id_product='$idProduct' ORDER BY comments.id"; |
||
Časová prodleva: 9 let
|
0