Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak dodac GROUP BY do niżej podanego zapytania
szczalpi
post
Post #1





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


Witam Was wszystkich. Poniżej wkleiłem kod mysql. Chcę dodać do zapytania GROUP BY, lecz nie wiem jak to zrobić. Próbuje na różne sposoby, ale nie wychodzi.
Proszę Was o pomoc jak to rozgryźć. Z góry dziękuje.
  1. [/sql]
  2.  
  3.  
  4.  
  5. [sql]$result = mysqli_query($conn,"SELECT FLOOR(RAND() * COUNT(*)) AS offset FROM k_copy WHERE id");
  6. $offset_row = mysqli_fetch_object( $result );
  7. $offset = $offset_row->offset;
  8. $result = mysqli_query($conn,"SELECT * FROM k_copy WHERE id LIMIT $offset, 10 " );
  9. $row = mysqli_fetch_array($result);
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To moze pokaz jak probujesz to dodac i jakie bledy dostajesz. W dokumentacji mysql masz jasno napisane przy skladni SELECT gdzie sie wstawia group by wiec ciezko mi sobie wyobrazic z czym konkretnie masz problem

ps: swoja droga co to za warunek?
WHERE id
warunek ma cos okreslac np
WHERE id > 10
WHERE id = 5
itd itd a nie samo id
Go to the top of the page
+Quote Post
szczalpi
post
Post #3





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


Nospor masz racje. Zmieniłem to i teraz wygląda tak:
  1. $result = mysqli_query($conn,"SELECT FLOOR(RAND() * COUNT(*)) AS offset FROM k_copy GROUP BY miasta");
  2. $offset_row = mysqli_fetch_object( $result );
  3. $offset = $offset_row->offset;
  4. $result = mysqli_query($conn,"SELECT * FROM k_copy LIMIT $offset, 10 " );
  5. $row = mysqli_fetch_array($result)


Niestety dalej nie chce mi grupować miejscowości o tej samej nazwie. :/
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie kumam co i gdzie chcesz grupowac.
Teraz GROUP BY dales w zapytaniu ktore zlicza liczbe rekordow. Dajac tam GROUP BY, zapytanie zwroci ci wiersze zawieracace liczbe miast o tej samej nazwie. I tyle. I ty z tego zapytania pobierasz tylko jeden wiersz.
Drugie zapytanie, ktore teoretycznie zwraca juz dane z rekordow, tam nie masz GROUP BY i tez pobierasz jeden rekord.


Moze wez sam sie najpierw zastanow co chcesz osiagnac, wywal to pseduo stronicowanie i skup sie na tym co chcesz zrobic i nam napisz. Bo teraz ni w zab nic z tego nie wynika
Go to the top of the page
+Quote Post
szczalpi
post
Post #5





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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



Chodzi mi oto, aby nie uzywac RAND(). Chce, aby z bazy pobieralo losowo rekordy, a jezeli się powtarzaja to aby je grupowalo.
  1. SELECT * FROM k_copy ORDER BY RAND() LIMIT 10
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Czyli chcesz losowo wyswietlic 10 roznych miast?

Czyli tak
select * from ( SELECT * FROM k_copy GROUP BY miasta) as podseld ORDER BY RAND() LIMIT 10
Go to the top of the page
+Quote Post
szczalpi
post
Post #7





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


Jezeli mam w bazie 160k rekordow to ta funkcja nie bedzie obciazala za mocno serwera ? Czytalem, aby RAND nie uzywać,ale moge sie mylic.
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to zamien to moje zapytanie

select * from ( SELECT * FROM k_copy GROUP BY miasta) as podseld ORDER BY RAND() LIMIT 10

na to twoje wczesniejnie gdzie wyliczales offset i juz. Ale zasada do wyswietlenia 10 roznych miast jest wlasnie taka jak podalem
Go to the top of the page
+Quote Post
szczalpi
post
Post #9





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


tak to ma wygladac
  1. $result = mysqli_query($conn,"SELECT FLOOR(RAND() * COUNT(*)) AS offset FROM k_copy GROUP BY miasta");
  2. $offset_row = mysqli_fetch_object( $result );
  3. $offset = $offset_row->offset;
  4. $result = mysqli_query($conn,"SELECT * FROM k_copy LIMIT $offset, 10 " );
  5. $row = mysqli_fetch_array($result);



kuzwa tepa dzida ze mnie ..... :/
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No nie, bo wrociles do punktu co miales pare postow wyzej. Mowielm, przystosuj ten kod do tego co ja ci podalem
Go to the top of the page
+Quote Post
szczalpi
post
Post #11





Grupa: Zarejestrowani
Postów: 336
Pomógł: 0
Dołączył: 25.10.2006

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


tak jest prawidlowo (IMG:style_emoticons/default/questionmark.gif) ?
  1. $result = mysqli_query($conn,"select * from ( SELECT * FROM k_copy GROUP BY miasta) as offset ORDER BY RAND() LIMIT 10 ");
  2. $offset_row = mysqli_fetch_object( $result );
  3. $offset = $offset_row->offset;
  4. //$result = mysqli_query($conn,"SELECT * FROM k_copy LIMIT $offset, 10 " );
  5. $row = mysqli_fetch_array($offset);
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ja sie wlasnie ucze na egzamin a ty skolei wylaczyles myslenie. Ja ci gotowca nie podam.

No teraz uzyles RAND w sortowaniu, a dopiero co marudziles ze to wolne i ma byc inaczej. No to czy to jest dobrze? No logicznie pomysl przez chwile....


O to
FLOOR(RAND() * COUNT(*))
masz wstawic gdzies, a potem majac wynic tego czegos masz pobrac wlasciwe rekordy ale tez pamietajac o strukturze co ci wczesniej podalem
Go to the top of the page
+Quote Post

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: 17.09.2025 - 16:02