Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak dodac GROUP BY do niżej podanego zapytania
szczalpi
post 10.06.2022, 18:10:59
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);


--------------------
Nieregulaminowa stopka usunieta
Go to the top of the page
+Quote Post
nospor
post 10.06.2022, 18:41:12
Post #2





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szczalpi
post 10.06.2022, 19:01:39
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. :/


--------------------
Nieregulaminowa stopka usunieta
Go to the top of the page
+Quote Post
nospor
post 10.06.2022, 19:07:37
Post #4





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szczalpi
post 10.06.2022, 19:21:47
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


--------------------
Nieregulaminowa stopka usunieta
Go to the top of the page
+Quote Post
nospor
post 10.06.2022, 19:25:07
Post #6





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szczalpi
post 10.06.2022, 19:33:00
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.


--------------------
Nieregulaminowa stopka usunieta
Go to the top of the page
+Quote Post
nospor
post 10.06.2022, 19:34:35
Post #8





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szczalpi
post 10.06.2022, 20:09:59
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 ..... :/


--------------------
Nieregulaminowa stopka usunieta
Go to the top of the page
+Quote Post
nospor
post 10.06.2022, 20:17:03
Post #10





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
szczalpi
post 10.06.2022, 20:23:57
Post #11





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

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


tak jest prawidlowo 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);


--------------------
Nieregulaminowa stopka usunieta
Go to the top of the page
+Quote Post
nospor
post 10.06.2022, 20:26:41
Post #12





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6297
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 27.04.2024 - 20:09