Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] dublowanie, DISTINCT
banki
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 23.11.2007

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


Witam, mam takie zapytanie do bazy:

  1. $klient = mysql_query("select nazwa,rocznik,data,ile_sztuk from usluga where and data != '0' order by nazwa ");


chciałbym aby rekordy z kolumny nazwa, które mają taką samą nazwę nie wyświetlały się. Próbowałem z DISTINCT ale mi nie wychodziło.

w poniższym się zgadza, "nazwa" nie dublują się, ale potrzebuje też pobrać więcej danych z kolumn tym zapytaniem
  1. $klient = mysql_query("select DISTINCT nazwa from usluga where and data != '0' order by nazwa ");


z góry dzięki za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
skarabe.pl
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 49
Dołączył: 29.07.2010

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


@wookie: z tego co pamiętam, to klauzula ORDER BY musi być za klauzulą GROUP BY, to raz. A dwa, że takie zapytanie nie ma prawa zadziałać, bo w GROUP BY trzeba wymienić *wszystkie* kolumny, które nie są funkcjami grupującymi.

@banki: spróbuj tak:
  1. SELECT nazwa,rocznik,DATA,ile_sztuk FROM usluga u WHERE AND DATA != '0' AND DATA = (SELECT MAX(u2.DATA) FROM usluga u2 WHERE u2.nazwa = u.nazwa) ORDER BY nazwa

Ciut niewydajne, ale powinno wyciągnąć to co trzeba. Powiedz jeszcze na której (których) kolumnie (kolumnach) jest klucz główny?
Go to the top of the page
+Quote Post
zelu
post
Post #3





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

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


Cytat(skarabe.pl @ 29.07.2010, 11:12:31 ) *
A dwa, że takie zapytanie nie ma prawa zadziałać, bo w GROUP BY trzeba wymienić *wszystkie* kolumny, które nie są funkcjami grupującymi.


Nie w MySQLu (IMG:style_emoticons/default/smile.gif) W PostgreSQL owszem (IMG:style_emoticons/default/smile.gif)

Cytat(skarabe.pl @ 29.07.2010, 11:12:31 ) *
  1. SELECT nazwa,rocznik,DATA,ile_sztuk FROM usluga u WHERE AND DATA != '0' AND DATA = (SELECT MAX(u2.DATA) FROM usluga u2 WHERE u2.nazwa = u.nazwa) ORDER BY nazwa

Ciut niewydajne, ale powinno wyciągnąć to co trzeba.


Ciut? (IMG:style_emoticons/default/smile.gif)

Cytat(skarabe.pl @ 29.07.2010, 11:12:31 ) *
@wookie: z tego co pamiętam, to klauzula ORDER BY musi być za klauzulą GROUP BY, to raz.

A to się zgadza (IMG:style_emoticons/default/winksmiley.jpg)

Pozdrawiam

Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 03:39