ďťż
 
[SQL] Update tabeli z subselectem ďťż
 
[SQL] Update tabeli z subselectem
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[SQL] Update tabeli z subselectem



Veeteq - 27-09-2007 00:09
[SQL] Update tabeli z subselectem
  Cześć

mam taką zagadkę nad którą głowię się od dłuższego czasu, otóż:
jest tabela Wnioski (id_wn, id_klt, data_wn, miasto)
na wejściu miasto jest puste i tutaj próbuję zrobić update z tabel z
informacjami o klientach i miastach. Dla trudności miasto w czasie sie
zmienia ale te dane są pamiętane.

UPDATE Wnioski wwp SET (Miasto) =
(SELECT miasta.name
FROM Wnioski wn, Klienci klt, Miasta
WHERE wn.id_klt = klt.id_klt
AND klt.id_miasta = Miasta.id_miasta
AND (klt.data_od<wn.data_wn AND klt.data_do>wn.data_wn))

sam SELECT działa OK, tzn gdyby chieć złożyć te 3 tabele to dostanę co
potrzebuję, natomiast przy UPDATE pojawia sie błąd że "jednowierszowe
zapytanie zwraca więcej niż jeden wiersz". Table klienci niestety nie jest
wolna od błędów i czasami pojawiają się duplikaty że pod jedną datą istnieje
kilka przypisać tego samego miasta.

dzięki ze ewentualne sugestie
Veeteq

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/





Grzegorz Danowski - 27-09-2007 00:09

  Użytkownik "Veeteq" <mw-magda.SKASUJ@gazeta.pl> napisał w wiadomości
news:fddpb5$rqu$1@inews.gazeta.pl...
> mam taką zagadkę nad którą głowię się od dłuższego czasu, otóż:
> jest tabela Wnioski (id_wn, id_klt, data_wn, miasto)
> na wejściu miasto jest puste i tutaj próbuję zrobić update z tabel z
> informacjami o klientach i miastach. Dla trudności miasto w czasie sie
> zmienia ale te dane są pamiętane.
>
> UPDATE Wnioski wwp SET (Miasto) =
> (SELECT miasta.name
> FROM Wnioski wn, Klienci klt, Miasta
> WHERE wn.id_klt = klt.id_klt
> AND klt.id_miasta = Miasta.id_miasta
> AND (klt.data_od<wn.data_wn AND klt.data_do>wn.data_wn))
>
> sam SELECT działa OK, tzn gdyby chieć złożyć te 3 tabele to dostanę co
> potrzebuję, natomiast przy UPDATE pojawia sie błąd że "jednowierszowe
> zapytanie zwraca więcej niż jeden wiersz". Table klienci niestety nie jest
> wolna od błędów i czasami pojawiają się duplikaty że pod jedną datą
> istnieje
> kilka przypisać tego samego miasta.

Może do podselekta dodaj Top 1.
G.




=?ISO-8859-2?Q?Marcin_Wr=F3blewski?= - 28-09-2007 00:11

  Veeteq <mw-magda.SKASUJ@gazeta.pl> napisał(a):

> Cześć
>
> mam taką zagadkę nad którą głowię się od dłuższego czasu, otóż:
> jest tabela Wnioski (id_wn, id_klt, data_wn, miasto)
> na wejściu miasto jest puste i tutaj próbuję zrobić update z tabel z
> informacjami o klientach i miastach. Dla trudności miasto w czasie sie
> zmienia ale te dane są pamiętane.
>
> UPDATE Wnioski wwp SET (Miasto) =
> (SELECT miasta.name
> FROM Wnioski wn, Klienci klt, Miasta
> WHERE wn.id_klt = klt.id_klt
> AND klt.id_miasta = Miasta.id_miasta
> AND (klt.data_od<wn.data_wn AND klt.data_do>wn.data_wn))
>
> sam SELECT działa OK, tzn gdyby chieć złożyć te 3 tabele to dostanę co
> potrzebuję, natomiast przy UPDATE pojawia sie błąd że "jednowierszowe
> zapytanie zwraca więcej niż jeden wiersz". Table klienci niestety nie jest
> wolna od błędów i czasami pojawiają się duplikaty że pod jedną datą
istnieje
> kilka przypisać tego samego miasta.
>
> dzięki ze ewentualne sugestie
> Veeteq
>

A jaka baza?
Ogólnie to trzeba zadbać, żeby to podzapytanie zwracało dokładnie jeden
wiersz. W oracle'u dodasz do niego warunek ROWNUM = 1, w mysql (chyba) LIMIT
1, a pewnie w innych bazach jeszcze co innego.

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




rogacewi - 28-09-2007 00:11

  Veeteq pisze:
> Cześć
>
> mam taką zagadkę nad którą głowię się od dłuższego czasu, otóż:
> jest tabela Wnioski (id_wn, id_klt, data_wn, miasto)
> na wejściu miasto jest puste i tutaj próbuję zrobić update z tabel z
> informacjami o klientach i miastach. Dla trudności miasto w czasie sie
> zmienia ale te dane są pamiętane.
>
> UPDATE Wnioski wwp SET (Miasto) =
> (SELECT miasta.name
> FROM Wnioski wn, Klienci klt, Miasta
> WHERE wn.id_klt = klt.id_klt
> AND klt.id_miasta = Miasta.id_miasta
> AND (klt.data_od<wn.data_wn AND klt.data_do>wn.data_wn))
>
> sam SELECT działa OK, tzn gdyby chieć złożyć te 3 tabele to dostanę co
> potrzebuję, natomiast przy UPDATE pojawia sie błąd że "jednowierszowe
> zapytanie zwraca więcej niż jeden wiersz". Table klienci niestety nie jest
> wolna od błędów i czasami pojawiają się duplikaty że pod jedną datą istnieje
> kilka przypisać tego samego miasta.
>
> dzięki ze ewentualne sugestie
> Veeteq
>

Spróbuj tak:

UPDATE wwp SET wwp.Miasto = m.Miasta
FROM Wnioski wwp
JOIN Klienci klt
ON klt.id_klt = wwp.id_klt
JOIN Miasta m
ON m.id_miasta = klt.id_miasta
WHERE klt.data_od < wn.data_wn
AND klt.data_od < wn.data_wn
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= =?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= =?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?= [newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • wawa19wwa91.pev.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com