Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Losowanie ;)
kusiu
post 13.01.2009, 18:16:18
Post #1





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 24.01.2006

Ostrzeżenie: (30%)
XX---


Posiadam w tabeli następujące rekordy:

id | nr | id_u
1 11 4
2 12 4
3 13 4
4 21 5
5 22 5

i chcialbym po przez mysql'a(lub mssql'a) wylosowac po jednym rekordzie dla kazdego id_u.. czyli z 3 rekordow dla id_u=4 wylosowac 1 oraz z 2 rekordów dla id_u=5 tez wylosowac 1, oczywiscie ilosc id_u bedzie dynamiczna...

Proszę o pomoc smile.gif

Ten post edytował kusiu 13.01.2009, 18:18:19
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
piotrooo89
post 13.01.2009, 18:37:09
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




  1. SELECT * FROM `tabela` WHERE id_u=1 ORDER BY RAND() LIMIT 1 ;


coś takiego?

Ten post edytował piotrooo89 13.01.2009, 18:37:17


--------------------
Go to the top of the page
+Quote Post
kusiu
post 13.01.2009, 18:41:02
Post #3





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 24.01.2006

Ostrzeżenie: (30%)
XX---


Cytat(piotrooo89 @ 13.01.2009, 18:37:09 ) *
  1. SELECT * FROM `tabela` WHERE id_u=1 ORDER BY RAND() LIMIT 1 ;


coś takiego?


No ale tu kolego Twój przykład wyświetli jeden rekord dla id_u=1... uzytkownikow bedzie wiecej ... kazdy bedzie mial po kilka rekordow i chodzi o to zeby wygenerowac po jednym rekordzie dla konkretnego uzytkownika...
Go to the top of the page
+Quote Post
magra
post 13.01.2009, 18:41:50
Post #4





Grupa: Zarejestrowani
Postów: 34
Pomógł: 8
Dołączył: 5.10.2004

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


  1. SELECT * FROM `tabela` GROUP BY `id_u` ORDER BY RAND()


--------------------
www.internetum.pl
Go to the top of the page
+Quote Post
kefirek
post 13.01.2009, 19:00:53
Post #5





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Chyba tak będzie
  1. <?php
  2. $wynik = mysql_query("SELECT * FROM test GROUP BY id_u");
  3. while($r = mysql_fetch_assoc($wynik)) {
  4. $wynik1 = mysql_query("SELECT * FROM test WHERE id_u='".$r['id_u']."' ORDER BY RAND() LIMIT 1");  
  5. while($r1 = mysql_fetch_assoc($wynik1)) {
  6. echo $r1['nr'];
  7. }  
  8. }  
  9. ?>
Go to the top of the page
+Quote Post
kusiu
post 14.01.2009, 09:37:16
Post #6





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 24.01.2006

Ostrzeżenie: (30%)
XX---


Cytat(magra @ 13.01.2009, 18:41:50 ) *
  1. SELECT * FROM `tabela` GROUP BY `id_u` ORDER BY RAND()


nie wiem jak w mysql, ale myslalem ze jak przerobie to troche i przeniose do mssql to bedzie smigac jednak nie... wywala blad..
poki co mam cos takiego:

  1. SELECT id_u FROM tabela GROUP BY id_u
  2. ORDER BY NEWID()


jak to rozwinac aby pokazywala się druga kolumna z wylosowanym nr??

Ten post edytował kusiu 14.01.2009, 09:39:05
Go to the top of the page
+Quote Post
magra
post 14.01.2009, 09:45:31
Post #7





Grupa: Zarejestrowani
Postów: 34
Pomógł: 8
Dołączył: 5.10.2004

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


W temacie masz mysql, a teraz piszesz, że ci nie działa w mssql?! Zdecyduj się o co chcesz zapytać...


--------------------
www.internetum.pl
Go to the top of the page
+Quote Post
zegarek84
post 14.01.2009, 09:50:11
Post #8





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(kusiu @ 14.01.2009, 09:37:16 ) *
nie wiem jak w mysql, ale myslalem ze jak przerobie to troche i przeniose do mssql to bedzie smigac jednak nie... wywala blad..

jako tako w zapytaniach SQL ogólnie nie ma funkcji rand() (jest ale w mysql) - na zaś zaznaczaj dokładniej o która bazę chodzi - mimo, iż na większość baz można przenosić zapytania SQL to są jednak drobne niuanse między nimi...

Cytat(kusiu @ 14.01.2009, 09:37:16 ) *
poki co mam cos takiego:
  1. SELECT id_u FROM tabela GROUP BY id_u
  2. ORDER BY NEWID()

jak to rozwinac aby pokazywala się druga kolumna z wylosowanym nr??
poprostu dopisz ta kolumnę w SELECT
  1. SELECT id_u,nr FROM tabela GROUP BY id_u
  2. ORDER BY NEWID()


Ten post edytował zegarek84 14.01.2009, 09:51:29


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
kusiu
post 14.01.2009, 09:58:19
Post #9





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 24.01.2006

Ostrzeżenie: (30%)
XX---


Cytat(magra @ 14.01.2009, 09:45:31 ) *
W temacie masz mysql, a teraz piszesz, że ci nie działa w mssql?! Zdecyduj się o co chcesz zapytać...


napisalem MySQL bo wiecej osob potrafi go od MsSQL'a a myslalem ze nie bedzie problemu tego zapytania wdrozyc do MsSQLa winksmiley.jpg

Cytat(zegarek84 @ 14.01.2009, 09:50:11 ) *
jako tako w zapytaniach SQL ogólnie nie ma funkcji rand() (jest ale w mysql) - na zaś zaznaczaj dokładniej o która bazę chodzi - mimo, iż na większość baz można przenosić zapytania SQL to są jednak drobne niuanse między nimi...

poprostu dopisz ta kolumnę w SELECT
  1. SELECT id_u,nr FROM tabela GROUP BY id_u
  2. ORDER BY NEWID()


Probowalem...Niestety wywala mi blad...
Column '#tmp.nr' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
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: 18.07.2025 - 02:58