Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Podwójne zapytanie o DISTINCT
pawel.ad
post 8.03.2010, 19:48:31
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 8.03.2010
Skąd: Zielona Góra

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


Witam,

Głowię się nad tym od paru godzin.

Jak stworzyć zapytanie do bacy danych które zwróciło by dwie wartości DISTINCT.
Zapytanie:
[MYSQL] pobierz, plaintext
  1. $zapytanie = "SELECT DISTINCT Name, DISTINCT Lastname FROM $team ORDER BY Lastname";
  2. $wynik = mysql_query($zapytanie)
[MYSQL] pobierz, plaintext

nie działa
[MYSQL] pobierz, plaintext
  1. $zapytanie = "SELECT DISTINCT(Name, Lastname) FROM $team ORDER BY Lastname";
  2. $wynik = mysql_query($zapytanie)
[MYSQL] pobierz, plaintext

też nie

Szukałem, próbowałem na wiele sposobów, ale żaden nie działa. Czy ktoś mógłby mnie oświecić? smile.gif

BTW. Ten sam problem miałem z wartością AVG() dla wielu kolumn. Też nie wiedziałem jak to zrobić, i skończyło się na tym że dla każdej wartości wysyłałem osobne zapytanie, co jest trochę krótkowzroczne. Jeżeli odpowiedź nie była by taka sama, to proszę również o naprowadzenie mnie z tym problemem.
Go to the top of the page
+Quote Post
Mchl
post 8.03.2010, 19:55:08
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


DISTINCT jest modyfikatorem całego zapytania a nie jednej kolumny.
Kod
DISTINCT Name, Lastname
Go to the top of the page
+Quote Post
pawel.ad
post 8.03.2010, 20:07:00
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 8.03.2010
Skąd: Zielona Góra

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


I znowu wyszedłem na głupka... smile.gif
Dziękuje bardzo.

To samo będzie z AVG(), czy ten nawias coś zmienia?

Ten post edytował pawel.ad 8.03.2010, 20:07:27
Go to the top of the page
+Quote Post
Mchl
post 8.03.2010, 20:10:48
Post #4





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


AVG() to funkcja agregująca. Zazwyczaj współpracuje z GROUP BY.

Np: średnie wartości wpłat i wypłat w rozbiciu na miesiące (pseudoSQL)

Kod
SELECT miesiac, AVG(wplaty), AVG(wyplaty) FROM transakcje GROUP BY miesiac
Go to the top of the page
+Quote Post
pawel.ad
post 8.03.2010, 20:19:28
Post #5





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 8.03.2010
Skąd: Zielona Góra

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


Słowo daję że próbowałem AVG(PTS), AVG(REB) wcześniej i nie działało... ;-)

No nic, jeszcze raz dziękuje.

I ostatnie pytanie.
Jak zobaczyć ludzi o różnych nazwiskach(DISTINCT Lastname), ale tak żeby DISTINCT nie działało na pensje?
Go to the top of the page
+Quote Post
Mchl
post 8.03.2010, 20:28:14
Post #6





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


questionmark.gif? Czyli co chciałbyś dostać z czego?
Go to the top of the page
+Quote Post
pawel.ad
post 8.03.2010, 20:34:43
Post #7





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 8.03.2010
Skąd: Zielona Góra

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


Chodzi mi o zapytanie w którym DISTINCT działa tylko na jedną z kolumn, tj. Nazwiska, a nie na płace, które mogą być takie same. Coś a'la:
[MYSQL] pobierz, plaintext
  1. $zapytanie = "SELECT DISTINCT Lastname, place(*bez DISTINCT*) FROM $team ORDER BY Lastname";
  2. $wynik = mysql_query($zapytanie)
[MYSQL] pobierz, plaintext
Go to the top of the page
+Quote Post
Mchl
post 8.03.2010, 20:57:59
Post #8





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Załóżmy że masz dane:
Kod
lastname, place
'Kowalski', 1
'Nowak', 1
'Kowalski', 2
'Kowalski', 1


Zapytanie
Kod
SELECT DISTINCT lastname,place
zwróci Ci trzy wiersze

'Kowalski', 1
'Nowak', 1
'Kowalski', 2

Tak byś chciał, czy inaczej?
Go to the top of the page
+Quote Post
pawel.ad
post 8.03.2010, 21:13:47
Post #9





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 8.03.2010
Skąd: Zielona Góra

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


Tak, o to mi chodziło.

Czyli:
[MYSQL] pobierz, plaintext
[MYSQL] pobierz, plaintext

to coś zupełnie innego od
[MYSQL] pobierz, plaintext
[MYSQL] pobierz, plaintext

tak?

Jedna przerwa, a jak wiele zmienia... ;]

Dzięki wielkie za pomoc. Można zamknąć.
Go to the top of the page
+Quote Post
Mchl
post 8.03.2010, 22:59:53
Post #10





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Err... nie... ta spacja nie ma znaczenia...
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 - 15:53