Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Skomplikowane zapytanie; łączenie zapytań; kilka select'ów w jednym zapytaniu
TheRiko
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 1
Dołączył: 10.09.2006

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


Witam.

Jakiś czas męczę się z zapytaniem. Chcę zrobić ranking punktów i w tym celu pobrać informacje z kilku tabel.
Chcę wyciągnąć takie dane: id, postac, skarb, suma regiment_ilosc, suma budynek_ilosc. Wszystko posortowane wedlug id usera i bez powtorzen.

users
id | postac | skarb

oddzialy
oddzial_id | user_id

regimenty
oddzial_id | SUM(regiment_ilosc)

budynki
user_id | SUM(budynek_ilosc)

Jak najprościel to zrobić?

Próbowałem kilkoma metodami:
<!--Geshi:323869:php--><pre class="php-brief" style="font-family:monospace;"><div class="head">[PHP] <span class="kw3">JOIN</span> <span class="re0">$oddzialy_users_tbl</span> o ON o<span class="sy0">.</span>oddzial_id<span class="sy0">=</span>r<span class="sy0">.</span>oddzial_id GROUP BY o<span class="sy0">.</span>oddzial_user_id</div><li class="li2"><div class="de2"> <span class="br0">)</span> w</div><li class="li1"><div class="de1"> WHERE u<span class="sy0">.</span><span class="kw3">stat</span><span class="sy0">=</span><span class="st0">'ok'</span> GROUP by u<span class="sy0">.</span>id</div>
[/list]<div class="foot">[PHP] <a href='./Pobierz-Plik-323870.html' target='_blank_t0'>bl</span> u LEFT <span class="kw3">JOIN</span> <span class="re0">$oddzialy_users_tbl</span> o ON o<span class="sy0">.</span>oddzial_user_id<span class="sy0">=</span>u<span class="sy0">.</span>id LEFT <span class="kw3">JOIN</span> <span class="re0">$regimenty_users_tbl</span> r ON r<span class="sy0">.</span>oddzial_id<span class="sy0">=</span>o<span class="sy0">.</span>oddzial_id LEFT <span class="kw3">JOIN</span> <span class="re0">$budynki_users_tbl</span> b ON b<span class="sy0">.</span>user_id<span class="sy0">=</span>u<span class="sy0">.</span>id WHERE u<span class="sy0">.</span><span class="kw3">stat</span><span class="sy0">=</span><span class="st0">'ok'</span> GROUP by u<span class="sy0">.</span>id</div>
[/list]<div class="foot">[PHP] [topic=0]bl</span> r LEFT <span class="kw3">JOIN</span> <span class="re0">$oddzialy_users_tbl</span> o ON o<span class="sy0">.</span>oddzial_id<span class="sy0">=</span>r<span class="sy0">.</span>oddzial_id GROUP BY o<span class="sy0">.</span>oddzial_user_id</div><li class="li2"><div class="de2"> <span class="br0">)</span> w</div><li class="li1"><div class="de1"> WHERE u<span class="sy0">.</span><span class="kw3">stat</span><span class="sy0">=</span><span class="st0">'ok'</span> GROUP by u<span class="sy0">.</span>id</div>
[/list]<div class="foot">[PHP] <a href='./Pobierz-Plik-323870.html' target='_blank, <a href='Plaintext-323870.html' target='_blank_t0'>bl</span> r LEFT <span class="kw3">JOIN</span> <span class="re0">$oddzialy_users_tbl</span> o ON o<span class="sy0">.</span>oddzial_id<span class="sy0">=</span>r<span class="sy0">.</span>oddzial_id GROUP BY o<span class="sy0">.</span>oddzial_user_id</div><li class="li2"><div class="de2"> <span class="br0">)</span> w</div><li class="li1"><div class="de1"> WHERE u<span class="sy0">.</span><span class="kw3">stat</span><span class="sy0">=</span><span class="st0">'ok'</span> GROUP by u<span class="sy0">.</span>id</div>
[/list]<div class="foot">[PHP] <a href='./Pobierz-Plik-323870.html' target='_blank_t0'>bl</span> u LEFT <span class="kw3">JOIN</span> <span class="re0">$oddzialy_users_tbl</span> o ON o<span class="sy0">.</span>oddzial_user_id<span class="sy0">=</span>u<span class="sy0">.</span>id LEFT <span class="kw3">JOIN</span> <span class="re0">$regimenty_users_tbl</span> r ON r<span class="sy0">.</span>oddzial_id<span class="sy0">=</span>o<span class="sy0">.</span>oddzial_id LEFT <span class="kw3">JOIN</span> <span class="re0">$budynki_users_tbl</span> b ON b<span class="sy0">.</span>user_id<span class="sy0">=</span>u<span class="sy0">.</span>id WHERE u<span class="sy0">.</span><span class="kw3">stat</span><span class="sy0">=</span><span class="st0">'ok'</span> GROUP by u<span class="sy0">.</span>id</div>
[/list]<div class="foot">[PHP] [topic=0]bl</span> r LEFT <span class="kw3">JOIN</span> <span class="re0">$oddzialy_users_tbl</span> o ON o<span class="sy0">.</span>oddzial_id<span class="sy0">=</span>r<span class="sy0">.</span>oddzial_id GROUP BY o<span class="sy0">.</span>oddzial_user_id</div><li class="li2"><div class="de2"> <span class="br0">)</span> w</div><li class="li1"><div class="de1"> WHERE u<span class="sy0">.</span><span class="kw3">stat</span><span class="sy0">=</span><span class="st0">'ok'</span> GROUP by u<span class="sy0">.</span>id</div>
[/list]<div class="foot">[PHP] <a href='./Pobierz-Plik-323870.html' target='_blank, <a href='Plaintext-323870.html' target='_blank </div></pre><!--/Geshi:323870:php-->
Tu próbowałem pobrać z zagnieżdżonym select'em, ale już przy pobieraniu samej ilosci zolnierzy napotkałem błąd, a mianowicie nie bierze pod uwagę tego w pętli while i dla każdego usera wyświetla tą samą ilość jaka jest u pierwszego (tak jakby nie brało pod uwagę GROUP by.

Miałem jeszcze kilka innych pomysłów ale nie warte wspominania bo wyświetlało je z błędem. Ma ktoś jakiś pomysł?



// EDIT

Poradziłem sobie w zupełnie inny sposób - na tablicach. Można zamknąć.

Ten post edytował TheRiko 6.04.2012, 19:32:10
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 19.08.2025 - 05:30