[MySQL] Bledne subquery
Szymon Zdziabek - 11-11-2006 00:52
[MySQL] Bledne subquery
Witam serdecznie, Rzuccie prosze okiem na ponizsze zapytanie: SELECT imie, nazwisko, id FROM `osoby` WHERE id IN (SELECT matkaid FROM `dzieci` WHERE (osobaid = '<jakasliczba>') LIMIT 1); i uswiadomcie mnie co w nim jest niepoprawnego... Przez pol godziny nie znalazlem bledu, ale moze juz w oczach mi sie roi od literek i cyferek :) Dodam, ze oba zapytania odrebnie dzialaja poprawnie, czyli np: SELECT matkaid FROM `dzieci` WHERE (osobaid = '5') LIMIT 1; oraz: SELECT imie, nazwisko, id FROM `osoby` WHERE id IN (5); Serwer bazodanowy oczywiscie w wersji obslugujacej subqueries.
-- Pozdrawiam, Szymon Zdziabek
J.L.P - 11-11-2006 00:52
> Rzuccie prosze okiem na ponizsze zapytanie: > SELECT imie, nazwisko, id FROM `osoby` WHERE id IN (SELECT matkaid FROM > `dzieci` WHERE (osobaid = '<jakasliczba>') LIMIT 1); > i uswiadomcie mnie co w nim jest niepoprawnego... Przez pol godziny nie > znalazlem bledu, ale moze juz w oczach mi sie roi od literek i cyferek :) > Dodam, ze oba zapytania odrebnie dzialaja poprawnie, czyli np: > SELECT matkaid FROM `dzieci` WHERE (osobaid = '5') LIMIT 1; > oraz: > SELECT imie, nazwisko, id FROM `osoby` WHERE id IN (5); > Serwer bazodanowy oczywiscie w wersji obslugujacej subqueries.
nie powinno tam byc jeszcze order by id? pytam bo cos mi swita na koncu umyslu ze mialem kiedys podobny problem ;)
Krzysztof Wiśniewski - 11-11-2006 00:52
Użytkownik "Szymon Zdziabek" <simon83@poczta_wytnij.onet.pl> napisał w wiadomości news:eef60o$niq$1@atlantis.news.tpi.pl... | Witam serdecznie, | Rzuccie prosze okiem na ponizsze zapytanie: | SELECT imie, nazwisko, id FROM `osoby` WHERE id IN (SELECT matkaid FROM | `dzieci` WHERE (osobaid = '<jakasliczba>') LIMIT 1); | i uswiadomcie mnie co w nim jest niepoprawnego... Przez pol godziny nie | znalazlem bledu, ale moze juz w oczach mi sie roi od literek i cyferek :) | Dodam, ze oba zapytania odrebnie dzialaja poprawnie, czyli np: | SELECT matkaid FROM `dzieci` WHERE (osobaid = '5') LIMIT 1; | oraz: | SELECT imie, nazwisko, id FROM `osoby` WHERE id IN (5); | Serwer bazodanowy oczywiscie w wersji obslugujacej subqueries. |
Nie napisałeś, co Ci nie działa w tym zapytaniu, ale wydaje mi się, że ten sam efekt uzyskasz w następujący sposób:
SELECT imie, nazwisko, id FROM `osoby` o INNER JOIN `dzieci` d ON d.matkaid = o.id WHERE d.osobaid = '<jakasliczba>';
Pozdrawiam, Krzysiek
Przemyslaw Popielarski - 11-11-2006 00:52
Szymon Zdziabek wrote: > SELECT imie, nazwisko, id FROM `osoby` WHERE id IN (SELECT matkaid > FROM `dzieci` WHERE (osobaid = '<jakasliczba>') LIMIT 1); > i uswiadomcie mnie co w nim jest niepoprawnego...
Podaj komunikat bledu, bedzie latwiej.
-- ../ premax ../ premax@hot.pl ../ koniec i bomba, a kto czytal ten traba. w.g.
Szymon Zdziabek - 11-11-2006 00:54
> Podaj komunikat bledu, bedzie latwiej. Zwraca taki blad, jakby nie bylo zadnych pobranych danych (pusty wynik SELECT). Odrebnie wykonane zwracaja poprawne wartosci.
-- Pozdrawiam, Szymon Zdziabek
Szymon Zdziabek - 11-11-2006 00:54
> nie powinno tam byc jeszcze order by id? Sortowanie w przypadku checi pobrania tylko jednego wiersza danych (LIMIT 1) nie jest mi potrzebne, wiec nie sadze, ale oczywiscie sprawdzic warto :)
-- Pozdrawiam, Szymon Zdziabek
Przemyslaw Popielarski - 11-11-2006 00:54
Szymon Zdziabek wrote: > SELECT imie, nazwisko, id FROM `osoby` WHERE id IN (SELECT matkaid > FROM `dzieci` WHERE (osobaid = '<jakasliczba>') LIMIT 1); > i uswiadomcie mnie co w nim jest niepoprawnego... Przez pol godziny > nie znalazlem bledu, ale moze juz w oczach mi sie roi od literek i > cyferek :) Dodam, ze oba zapytania odrebnie dzialaja poprawnie, czyli > np: SELECT matkaid FROM `dzieci` WHERE (osobaid = '5') LIMIT 1; > oraz: > SELECT imie, nazwisko, id FROM `osoby` WHERE id IN (5); > Serwer bazodanowy oczywiscie w wersji obslugujacej subqueries.
Zeby Ci Twoje podzapytanie zwrocilo wynik, to musisz miec wiersz z matkaid=5 w tabeli dzieci. Masz? Bo nie wynika to z Twojej wypowiedzi.
-- ../ premax ../ premax@hot.pl ../ koniec i bomba, a kto czytal ten traba. w.g.
Szymon Zdziabek - 11-11-2006 00:55
> Zeby Ci Twoje podzapytanie zwrocilo wynik, to musisz miec wiersz z > matkaid=5 w tabeli dzieci. Masz? Tak, dane rowniez sa poprawne. Uruchamiam skrypt najpierw ze srodkowym zapytaniem, na ekranie mam ladny wynik (id osoby), zmienam szybko zapytanie na glowne podajac w nawiasie klauzuli WHERE zwrocony wczesniej wynik zamiast wewnetrznego zapytania i po przeladowaniu strony uzyskuje rowniez poprawny, juz ostateczny, wynik. Tak wiec dane sa poprawne i oba zapytania rowniez. Nie chca dzialac ze soba...
-- Pozdrawiam, Szymon Zdziabek
Szymon Zdziabek - 11-11-2006 00:55
Dodam, ze inne, bardziej zlozone subquery na stronie ktora tworze dzialaja poprawnie.
-- Pozdrawiam, Szymon Zdziabek
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?=
[mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?=
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
[mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?=
[MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?=
[MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?=
Gdzie MySQL 4.1, a gdzie 5.0?
[MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?=
[MS SQL] "set names" (mySQL) w MS SQL
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
zanotowane.pldoc.pisz.plpdf.pisz.pllisinski.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|