Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] zapytanie
blizniak
post 10.01.2009, 08:57:01
Post #1





Grupa: Zarejestrowani
Postów: 253
Pomógł: 0
Dołączył: 14.04.2005

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
kefirek
post 10.01.2009, 09:16:51
Post #2





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


  1. SELECT a.*, (SELECT SUM(czynsz) FROM advert_have_room c WHERE (a.id=c.id_advert)) AS czynsz
  2. FROM advert_have a;
Go to the top of the page
+Quote Post
blizniak
post 10.01.2009, 15:30:06
Post #3





Grupa: Zarejestrowani
Postów: 253
Pomógł: 0
Dołączył: 14.04.2005

Ostrzeżenie: (0%)
-----


zapytanie to zwraca mi blad ze tabela "a" nie istnieje, blad 1146
Go to the top of the page
+Quote Post
nospor
post 10.01.2009, 15:34:30
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
phpion
post 10.01.2009, 15:34:36
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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;


Ten post edytował phpion 10.01.2009, 15:37:28
Go to the top of the page
+Quote Post
blizniak
post 10.01.2009, 16:05:45
Post #6





Grupa: Zarejestrowani
Postów: 253
Pomógł: 0
Dołączył: 14.04.2005

Ostrzeżenie: (0%)
-----


ok 2 powyzsze przyklady dzialaja, dzieki,
co to jest to a i b jak to sie nazywa ?

Ten post edytował blizniak 10.01.2009, 16:06:17
Go to the top of the page
+Quote Post
phpion
post 10.01.2009, 16:14:21
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:48