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ąć.