Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] zapytanie
Forum PHP.pl > Forum > Bazy danych
blizniak
  1. CREATE TABLE `advert_have` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `id_who_rent` int(11) NOT NULL DEFAULT '0',
  4. `data_dod` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  5. `miasto` int(11) NOT NULL DEFAULT '0',
  6. `ulica` varchar(40) NOT NULL DEFAULT '',
  7. `name` varchar(20) NOT NULL DEFAULT '',
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;

  1. CREATE TABLE `advert_have_room` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `id_advert` int(11) NOT NULL DEFAULT '0',
  4. `czynsz` varchar(5) NOT NULL DEFAULT '',
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=66 ;

i teraz przykladowe dane
  1. TABLE advert_have
  2. id | name
  3. 2 | xxxx
  4. 3 | cccc
  5. 4 | ffffff

  1. TABLE advert_have_room
  2. id | id_advert | czynsz
  3. 1 |2 | 40
  4. 2 |3 | 30
  5. 3 |3 | 20
  6. 4 |4 | 10
  7. 5 |4 | 60

advert_have.id = advert_have_room.id_advert
czy da sie zrobic takie zapytanie ktore wyswietli mi cos takiego - chodzi o to aby czynsz z tej drugiej tabeli byl sumowany dla takich samych id_advert
  1. id | name | czynsz
  2. 2 | xxxx | 40
  3. 3 | ccccc | 50
  4. 4 | ffffff | 70
kefirek
  1. SELECT a.*, (SELECT SUM(czynsz) FROM advert_have_room c WHERE (a.id=c.id_advert)) AS czynsz
  2. FROM advert_have a;
blizniak
zapytanie to zwraca mi blad ze tabela "a" nie istnieje, blad 1146
nospor
@kefirek a po co tu podzapytanie? do tego sluzy group by

  1. SELECT ah.name, sum(ahr.czynsz) czynsz FROM advert_have_room ahr
  2. LEFT JOIN advert_have ah ON ahr.id_advert=ah.id
  3. GROUP BY ahr.id_advert
phpion
Jeśli się nigdzie nie machnąłem to powinno działać:
  1. SELECT a.id_advert, b.name, SUM(a.czynsz) FROM advert_have_room a LEFT JOIN advert_have b ON a.id_advert=b.id GROUP BY a.id_advert;
blizniak
ok 2 powyzsze przyklady dzialaja, dzieki,
co to jest to a i b jak to sie nazywa ?
phpion
Cytat(blizniak @ 10.01.2009, 18:05:45 ) *
co to jest to a i b jak to sie nazywa ?

Są to aliasy tabel czyli nazwy skrótowe aby nie używać pełnych (długich) nazw.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.