Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySql] Unikalne zapytanie
jerry89
post 19.11.2009, 20:43:04
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 14.08.2007

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


Witam,
posiadam w tabeli 3 kolumny, primary KEY czyli id, jakas nazwe i inną wartosc (powtarzającą się) powiedzmy id2.
Chcę wyciągnąć losowo 3 rekordy, każdy o róznym id2. Jak tego dokonac?
Bawilem się z DISTINCT ale to funkcja ta pobiera wszystkie niepowtarzające się mozliwosci. Mozna by pobrac jedynie tak:
SELECT DISTINCT id2 FROM blabla ORDER by rand() LIMIT 3;
Ale wtedy nie bede mial pola nazwa które jest mi niezbedne.
Raczej w Mysql nie ma funkcji UNIQUE tak jak np w Oracle. Może to rozwiązac jakims podpzapytaniem? ma ktos pomysł?
Go to the top of the page
+Quote Post
maly_swd
post 19.11.2009, 21:15:29
Post #2





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


  1. SELECT DISTINCT id2, nazwa, id FROM blabla ORDER BY rand() LIMIT 3;
Czy ja dobrze zrozumialem? - to powinno zadzialac;)


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post
jerry89
post 19.11.2009, 21:35:11
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 14.08.2007

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


Własnie o tym pisałem ze to nie zadziała bo tutaj slowo DISTINCT wybiera nam wszystkie mozliwosci niepowtarzających się rekordów. Jednak ja chcę aby tlyko id2 było niepowtarzające się. To zapytanie, które podałes wyswietli nam tak naprawde wszystkie rekordy(przy załozeniu id jest keyem).
Go to the top of the page
+Quote Post
cojack
post 19.11.2009, 21:48:34
Post #4





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


DISTINCT ON (nazwa_kolumny)



@edit
mysql sux

Ten post edytował cojack 20.11.2009, 03:25:06


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
maly_swd
post 19.11.2009, 22:24:13
Post #5





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


Wiesz , u mnie to dziala. Wyswietla unikalne (id2) 3 losowe rekordy. Sprawdz i podaj jaki wynik Ci zwraca i opisz czemu on nie spelnia Twojego kryterium

SELECT DISTINCT id2, nazwa, id FROM blabla ORDER BY rand() LIMIT 3;

mozesz tez i tak

SELECT id2, nazwa, id FROM blabla GROUP BY ID2 ORDER BY rand() LIMIT 3;


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post
jerry89
post 19.11.2009, 22:32:48
Post #6





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 14.08.2007

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


Cytat(cojack @ 19.11.2009, 21:48:34 ) *
DISTINCT ON (nazwa_kolumny)



Mam bląd przy takim wyrazeniu. Czy takie cos istnieje w Mysql? A nie przypadkiem tylko w PostgreSQL?

Cytat(maly_swd @ 19.11.2009, 22:24:13 ) *
Wiesz , u mnie to dziala. Wyswietla unikalne (id2) 3 losowe rekordy. Sprawdz i podaj jaki wynik Ci zwraca i opisz czemu on nie spelnia Twojego kryterium

SELECT DISTINCT id2, nazwa, id FROM blabla ORDER BY rand() LIMIT 3;

Dodaj sobie do tabeli 15 rekordów w których po 5 rekordów mają te same id2. Kilka razy wykonaj to zapytanie. ID2 sie powtórzy.

Cytat(maly_swd @ 19.11.2009, 22:24:13 ) *
mozesz tez i tak

SELECT id2, nazwa, id FROM blabla GROUP BY ID2 ORDER BY rand() LIMIT 3;

To juz działa nieźle. Podaje 3 rekordy o róznym id2 jednak za kazdym razem wyswietla te same 3 rekordy, a losuje tylko ich kolejnosc...
Go to the top of the page
+Quote Post
maly_swd
post 20.11.2009, 09:18:21
Post #7





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


Obydwa zapytania robia to samo.
Podaj strukture bazy/tabeli i przykladowe dane. U mnie dzialaja obydwa tak samo i wyswietlaja unikalne rekordy ID2

Ten post edytował maly_swd 20.11.2009, 09:18:36


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post
jerry89
post 20.11.2009, 14:23:35
Post #8





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 14.08.2007

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


Wrzucam przykład bazy:
http://pastie.org/707526

Oraz mój screen:


Jak widac siteid czyli id2 (tak wczesniej to nazywalismy) sie powtarza.

Ten post edytował jerry89 20.11.2009, 14:24:22
Go to the top of the page
+Quote Post
maly_swd
post 20.11.2009, 15:36:51
Post #9





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


hmm faktycznie z tym distinct, nie wiem co ja wczoraj sprawdzalem;)


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
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: 16.05.2024 - 13:50