Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL] prosty select
pawniepodam
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.05.2012

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


Mam następujący układ tabeli:

ID_USERA NAZWA_ADRESU ADRES
1 Podstawowy aaa
2 Podstawowy bbb
2 Dodatkowy ccc
2 Opcjonalny xxx
3 Podstawowy ddd




Potrzębuję otrzymać w wyniku zapytania SELECT następującą strukturę, czyli chce wyświetlać adresy Podstawowe, a jeśli jest Dodatkowy, to Dodatkowy:

ID_USERA NAZWA_ADRESU ADRES
1 Podstawowy aaa
2 Dodatkowy ccc
3 Podstawowy ddd

Ten post edytował pawniepodam 4.10.2012, 14:20:07
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




słowo klucz: GROUP BY


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

"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
pawniepodam
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.05.2012

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


ale ja nie chce nic sumować, ani wyciągać wartości max, bądź minimum.
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




GROUP BY nie słuzy do sumowania ale między innymi do sumowania.... chcesz miec po jednym rekordzie z danego ID_USERA.... do tego służy GROUP BY.


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

"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
pawniepodam
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.05.2012

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


  1. SELECT
  2. kontrahent.kontrahent_id,
  3. kontrahent.nazwa,
  4. odbiorca.odbiorca_idn,
  5. adrkontr.nazwa,
  6.  
  7.  
  8. case when rtrim(adrkontr.nazwa) = 'Transport' then
  9. rtrim(adrkontr.ulica)+' '+(CASE WHEN adrkontr.nrdomu IS NOT NULL then rtrim(adrkontr.nrdomu) else '' end)+
  10. (CASE WHEN ltrim(rtrim(adrkontr.nrmieszk))='' OR adrkontr.nrmieszk IS NULL THEN '' ELSE '/'+rtrim(adrkontr.nrmieszk) END)
  11.  
  12. else
  13.  
  14. rtrim(kontrahent.ulica)+' '+(CASE WHEN kontrahent.nrdomu IS NOT NULL then rtrim(kontrahent.nrdomu) else '' end)+
  15. (CASE WHEN ltrim(rtrim(kontrahent.nrmieszk))='' OR kontrahent.nrmieszk IS NULL THEN '' ELSE '/'+rtrim(kontrahent.nrmieszk) END)
  16.  
  17. end,
  18.  
  19.  
  20.  
  21. case when rtrim(adrkontr.nazwa) = 'Transport' then adrkontr.miasto
  22. else
  23. kontrahent.miasto
  24. end,
  25.  
  26. kontrahent.telefon1,
  27. kontrahent.nip,
  28. kontrahent.nazwisko+' '+kontrahent.imie
  29.  
  30.  
  31.  
  32.  
  33. FROM kontrahent, adrkontr, odbiorca
  34. WHERE
  35. odbiorca.kontrahent_id = kontrahent.kontrahent_id AND
  36. adrkontr.kontrahent_id = kontrahent.kontrahent_id GROUP BY kontrahent.kontrahent_id
  37.  
  38.  



to czemu jak dodam GROUP BY kontrahent.kontrahent_id
to mi wywala:
Column 'kontrahent.nazwa' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Ten post edytował pawniepodam 4.10.2012, 15:13:05
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




A jaka to jest baza danych? mysql, oracle, coś innnego?


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

"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
--pawniepodam--
post
Post #7





Goście







mssql
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




To następnym razem pisz od razu czego używasz....
Przyjąłem że korzystasz z mysql a tam by to zadziałało smile.gif


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

"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
pawniepodam
post
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.05.2012

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


Sorki za niekompletność posta.

A jakaś podpowiedź odnośnie mssql'a i selecta ?
Go to the top of the page
+Quote Post
BaN
post
Post #10





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


Przecież sam podałeś jaki jest błąd, musisz dodać pole 'kontrahent.nazwa' do GROUP BY
Go to the top of the page
+Quote Post
--pawniepodam--
post
Post #11





Goście







BaN mógłbyś rozwinąć co masz dokładnie na mysli ?
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 Aktualny czas: 22.08.2025 - 04:28