Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Stworzenie specyficznego zapytania do bazy danych lub filtrowanie w php, Zniwelowanie powielania się danych w wyniku (1 wiersz = 1 pozycja)
patrix007
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 18.07.2010

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


Witam (IMG:style_emoticons/default/smile.gif)

Postanowiłem pogłębić nieco moją wiedzę w tej dziedzinie i zabrać się za coś odrobinkę trudniejszego.
Zabawa szła dobrze do pewnego momentu, już wyjaśniam o co mi chodzi.

Mam taką o to bazę danych (a raczej jej potrzebny tutaj fragment):

(IMG:http://members.multimania.co.uk/patriks007/forumPHP/widok.jpg)

Stworzyłem sobie takie oto zapytanie:

(IMG:http://members.multimania.co.uk/patriks007/forumPHP/zapytanie.jpg)

Które daje taki wynik w phpadminie:

(IMG:http://members.multimania.co.uk/patriks007/forumPHP/wynik.jpg)


Moje pytanie polega na tym, jak "unormalnić" ten wynik zapytania ?
Normalną sprawą jest, że funkcja w php mysqli_fetch_assoc listuje ten wynik w taki sam sposób j/w co utrudnia mi strasznie zabawę bo nie mam pomysłu jak to przefiltrować w PHP.
A może nie wpadłem na pomysł i da się to sprytnie poprawić w samym zapytaniu zaoszczędzając sobie sporo dłubania w PHP ?

Aby była całkowita jasność mojej wizji podam przykład wyniku jaki właśnie mnie interesuje:

(IMG:http://members.multimania.co.uk/patriks007/forumPHP/marzenie.jpg)

Bawiłem się troszeczkę GROUP_CONCAT ale moimi pomysłami realizuję powyższy plan co najwyżej połowicznie (IMG:style_emoticons/default/worriedsmiley.gif)

Proszę o rady/pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
patrix007
post
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 18.07.2010

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


Poczytałem chwilkę o JOIN i stworzyłem takie oto zapytanie:

Kod
SELECT
        film_b.idfilm 'id',
        film_b.tytul_ang,
        film_b.rok_prod 'produkcja',
        GROUP_CONCAT( DISTINCT CONCAT(czlowiek_filmu_b.imie,' ',czlowiek_filmu_b.nazwisko)) 'rezyseria',
        GROUP_CONCAT( DISTINCT CONCAT(a.imie,' ',a.nazwisko)) 'aktorzy',
        GROUP_CONCAT( DISTINCT gatunek.nazwa) 'gatunek'
        
FROM
        film AS film_b,
        rola AS rola_b,
        czlowiek_filmu AS czlowiek_filmu_b,
        czlowiek_filmu_do_film AS czlowiek_filmu_do_film_b,
        gatunek,
        film_do_gatunek
        
INNER JOIN   (
    
SELECT
        film_a.idfilm 'id',
        czlowiek_filmu_a.imie,
        czlowiek_filmu_a.nazwisko
        
FROM
        film AS film_a,
        rola AS rola_a,
        czlowiek_filmu AS czlowiek_filmu_a,
        czlowiek_filmu_do_film AS czlowiek_filmu_do_film_a
        
WHERE    
        rola_a.rola = 'aktor' AND
        czlowiek_filmu_do_film_a.czlowiek_filmu_idczlowiek_filmu = czlowiek_filmu_a.idczlowiek_filmu AND
        czlowiek_filmu_do_film_a.film_idfilm = film_a.idfilm AND
        czlowiek_filmu_do_film_a.rola_idrola = rola_a.idrola ) AS a
        ON a.id = id

WHERE    rola_b.rola = 'rezyser' AND
        czlowiek_filmu_do_film_b.czlowiek_filmu_idczlowiek_filmu = czlowiek_filmu_b.idczlowiek_filmu AND
        czlowiek_filmu_do_film_b.film_idfilm = film_b.idfilm AND
        czlowiek_filmu_do_film_b.rola_idrola = rola_b.idrola AND
        film_do_gatunek.film_idfilm = film_b.idfilm  AND
        film_do_gatunek.gatunek_idgatunek = gatunek.idgatunek GROUP BY film_b.idfilm



Wynik zapytania jest następujący:

(IMG:http://members.multimania.co.uk/patriks007/forumPHP/prawie.jpg)
Jest już prawie idealnie ! (IMG:style_emoticons/default/smile.gif)

Moje jeszcze jedno pytanie w związku z tym,
dlaczego w kolumnie aktorzy nie powtarza się kolejność wpisów ?

Ten post edytował patrix007 19.07.2010, 00:20:52
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.08.2026 - 01:25