[mysql] da =?ISO-8859-2?Q?si=EA_w_jednym_zapytaniu=3F?=
Gerwazy - 13-07-2006 01:46
[mysql] da =?ISO-8859-2?Q?si=EA_w_jednym_zapytaniu=3F?=
mam tabele:
tabela1
Id | numery_zlecen 1 | 1,2 2 | 3,4,5
tabela2
Id | koszt 1 | 20 2 | 24 3 | 40 4 | 11 5 | 100
opierając się na tabela1 w wyniku chciałbym otrzymać dodatkowe pole suma:
Id | numery_zlecen | suma 1 | 1,2 | 44 2 | 3,4,5 | 151
da się to zrobić w jednym zapytaniu?
Jacek Stawicki - 13-07-2006 01:46
Użytkownik "Gerwazy" <gerwazy@nomail.no> napisał w wiadomości news:e93il3$m72$1@atlantis.news.tpi.pl...
> da się to zrobić w jednym zapytaniu?
imo nie
ps. po to wymyslono struktury relacyjne by czerpac z nich korzysci :)
Piotr =?iso-8859-2?Q?Kuli=F1ski?= - 14-07-2006 02:46
Roku Pańskiego 2006, na pl.comp.bazy-danych, człowiek (??) *Gerwazy* napisał(a):
> mam tabele: > > tabela1 > > Id | numery_zlecen > 1 | 1,2 > 2 | 3,4,5 > > tabela2 > > Id | koszt > 1 | 20 > 2 | 24 > 3 | 40 > 4 | 11 > 5 | 100 > > opierając się na tabela1 w wyniku chciałbym otrzymać dodatkowe pole suma: > > Id | numery_zlecen | suma > 1 | 1,2 | 44 > 2 | 3,4,5 | 151 > > da się to zrobić w jednym zapytaniu?
SELECT sum(T2.koszt) as suma FROM tabela1 T1, tabela2 T2 WHERE T2.id IN (T1.numery_zlecen);
może tak, ale nie testowane :)
-- pozdrawiam piotr, gg i skype w X-nagłówku posta, e-mail: zmień "wpw" na "wp" Nic nie stoi na przeszkodzie, co by sobie przeszkody nie stworzyć :)
Gerwazy - 14-07-2006 02:46
Piotr Kuliński napisał(a):
> SELECT sum(T2.koszt) as suma > FROM tabela1 T1, tabela2 T2 > WHERE T2.id IN (T1.numery_zlecen); > > może tak, ale nie testowane :)
To daje tylko jedną kwotę zbiorczo zamiast tabeli jak w zapytaniu. Wygląda na to, że się nie da czyli pozostaje dodatkowe pytanie w pętli. Nie ma co oszczędzać na relacyjnych tabelach, to prawda :)
Piotr =?ISO-8859-2?Q?Kuli=F1ski?= - 15-07-2006 01:25
Gerwazy wrote:
> Piotr Kuliński napisał(a): > >> SELECT sum(T2.koszt) as suma >> FROM tabela1 T1, tabela2 T2 >> WHERE T2.id IN (T1.numery_zlecen); >> >> może tak, ale nie testowane :) > > To daje tylko jedną kwotę zbiorczo zamiast tabeli jak w zapytaniu. > Wygląda na to, że się nie da czyli pozostaje dodatkowe pytanie w pętli. > Nie ma co oszczędzać na relacyjnych tabelach, to prawda :) te tabele ni ewyglądają na relacyjne, przynajmniej nie tabela1
to może tak, ale gdybam :) SELECT T1.id, sum(T2.koszt) as suma FROM tabela1 T1, tabela2 T2 WHERE T2.id IN (T1.numery_zlecen) GROPU BY T1.id;
-- pozdrawiam, GG i SkyPe w X-nagłówku posta, e-mail: zmień "wpw" na "wp" piotr "Nic nie stoi na przeszkodzie, co by przeszkody sobie nie stworzyć :)"
robert4720@vp.pl - 15-07-2006 01:26
> mam tabele: > > tabela1 > > Id | numery_zlecen > 1 | 1,2 > 2 | 3,4,5 > > tabela2 > > Id | koszt > 1 | 20 > 2 | 24 > 3 | 40 > 4 | 11 > 5 | 100 > > > opierając się na tabela1 w wyniku chciałbym otrzymać dodatkowe pole suma: > > Id | numery_zlecen | suma > 1 | 1,2 | 44 > 2 | 3,4,5 | 151 > > da się to zrobić w jednym zapytaniu?
Witam serdecznie
tak patrząc na to wydaje mi sie że wystarczyła by jedna tabelka która by wyglądała tak
id (opcjonalnie), nr_zlecenia , koszt
gdybyć chciał mieć na to samo zlecenie kilka kosztów.
jeżeli zlecenie ma jeden koszt to wystarczy zrobić nr zlecenia jako primary key
nr_zlecenia primary key , koszt
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Gerwazy - 16-07-2006 01:04
> id (opcjonalnie), nr_zlecenia , koszt > > gdybyć chciał mieć na to samo zlecenie kilka kosztów. > > jeżeli zlecenie ma jeden koszt to wystarczy zrobić nr zlecenia jako primary key > > nr_zlecenia primary key , koszt
No niestety właśnie nie może tak być. Bo te zlecenia z tabela1 to są jakby pogrupowane podzlecenia z tabela2. Dwie tabele muszą funkcjonować osobno. Mogłem dodać wręcz trzecią relacyjną ale ja dałem dla liczenia sumy po prostu podzapytanie w pętli wyglądające tak:
$zapytanie = "SELECT numery_zlecen FROM tabela1"; $wykonaj = mysql_query ($zapytanie); while ($wiersz=mysql_fetch_array ($wykonaj)) { $zapytanie_suma="SELECT sum(koszt) as koszt FROM tabela2 WHERE Id IN ({$wiersz['numery_zlec']})"; .... }
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Gdzie MySQL 4.1, a gdzie 5.0?
[MS SQL] "set names" (mySQL) w MS SQL
oracle -> oracle lub oracle -> mysql replikacja - programy
[MySQL] Zwrot tego, co pasuje i nie pasuje :-/
[pgsql] Dostosowanie składni MySQL 5.0 -> PGSQL 8.1
[mysql] galeria zdjec - numerowanie zdjec
[mysql] CONCAT agregujący, ale nie GROUP_CONCAT()
mysql data 0000-00-00 na koniec
[MySQL] Problem z zapisem danych w bazie danych
jak przenieesc czesc tabeli do innej tabeli MySQL
zanotowane.pldoc.pisz.plpdf.pisz.pllubiatowo.xlx.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 |
|