Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] prosty select
Forum PHP.pl > Forum > Przedszkole
pawniepodam
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
nospor
słowo klucz: GROUP BY
pawniepodam
ale ja nie chce nic sumować, ani wyciągać wartości max, bądź minimum.
nospor
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.
pawniepodam
  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.
nospor
A jaka to jest baza danych? mysql, oracle, coś innnego?
-pawniepodam-
mssql
nospor
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
pawniepodam
Sorki za niekompletność posta.

A jakaś podpowiedź odnośnie mssql'a i selecta ?
BaN
Przecież sam podałeś jaki jest błąd, musisz dodać pole 'kontrahent.nazwa' do GROUP BY
-pawniepodam-
BaN mógłbyś rozwinąć co masz dokładnie na mysli ?
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.