overzicht verkrijgen vanuit 2 tabellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

DeZond

DeZond

04/10/2007 13:47:00
Quote Anchor link
Ik heb twee tabellen: tblArtiest en tblGenre. Ze hebben beiden een gelinkte index, nl IDGenre.
De tabel tblGenre geeft de verschillende genres weer; met dus IDGenre als hoofdindex.
De tabel tblArtiest heeft eveneens een rij IDGenre met een numerieke waarde; die dus wijst naar tblGenre.

Nu wil ik op 1 pagina een volledig overzicht van alle artiesten; met hun Genre.
Ik weet niet hoe ik dit best kan aanpakken. Als ik een query maak van beide tabellen; bekom ik als resultaat dat ik enkel de eerste artiest zie; in meervoud als het aantal rijen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$query_rsGenre
= "SELECT * FROM tblArtiest, tblGenre WHERE tblArtiest.IDGenre = tblGenre.IDGenre";
$rsGenre = mysql_query($query_rsGenre, $######) or die(mysql_error());
$row_rsGenre = mysql_fetch_assoc($rsGenre);
$totalRows_rsGenre = mysql_num_rows($rsGenre);
?>


Ik heb ook geprutst om het via een array te doen, maar dit lukte me niet.
Kan er iemand mij helpen; kben nieuw in PHP maar ik leer elke dag bij; gelukkig pfff.
Het is wel gelukt als er specifiek 1 artiest is gekozen, maar een overzicht van alle artiesten met hun respectievelijke genre lukt me niet.
Gewijzigd op 01/01/1970 01:00:00 door DeZond
 
PHP hulp

PHP hulp

02/05/2024 15:27:54
 
Gerben Jacobs

Gerben Jacobs

04/10/2007 14:33:00
Quote Anchor link
Doe eens een GROUP BY met het veld van je ariest id (ik weet niet welke dat is)
 
DeZond

DeZond

04/10/2007 19:16:00
Quote Anchor link
Bedankt voor je reactie. Ik zie nog niet in hoe een Group by me kan helpen.
Khad ook gezoch achter een JOIN ?
Ik zoek het volgende; uit eigenlijk drie tabellen.

tblArtiest
ID
Naam
IDGenre
IDTaal

tblGenre
IDGenre
Genre

tblTaal
IDTaal
Taal

Een volledige overzicht van alle artiesten

naamvanartiest1 genre taal
naamvanartiest2 genre taal
naamvanartiest3 genre taal
naamvanartiest4 genre taal
enzoverder....


wie kan mij helpen aub ?
 
Joren de Wit

Joren de Wit

04/10/2007 19:47:00
Quote Anchor link
Een GROUP BY heeft hier inderdaad niets mee te maken. Met de JOIN die je in principe in eerste instantie ook al gebruikt, zit je wel goed. Het gaat alleen om de manier waarop je je gegevens uitleest met PHP.

Ik zou kijken naar een LEFT JOIN zodat je ook artiesten ophaalt waaraan geen genre of taal gekoppeld is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$sql
= "
    SELECT a.Naam, g.Genre, t.Taal
    FROM tblArtiest AS a
    LEFT JOIN tblGenre AS g
        ON g.IDGenre = a.IDGenre
    LEFT JOIN tblTaal AS t
        ON t.IDTaal = a.IDTaal
    "
;

if(!$res = mysql_query($sql))
{

    trigger_error(mysql_error());
}

else
{
    while($row = mysql_fetch_assoc($res))
    {

        echo $row['Naam'].' '.$row['Genre'].' '.$row['Taal'].'<br>';
    }
}

?>
 
DeZond

DeZond

04/10/2007 20:34:00
Quote Anchor link
Ik heb het in een recordset verwerkt; het werkt prima ! Dank U, Blanche.
Nu wil ik op elke naam een link leggen met als detail-parameter: IDArtiest
dus de link profile.php?IDArtiest="hier komt de output van IDArtiest".

De vraag is: hoe krijg ik de juiste IDArtiest van de respectievelijk Artiest uit de join ?
Moet ik enkel dan a.IDArtiest bijvoegen ?

Ik heb het geprobeerd, en het werkt. Is dit een goede oplossing?


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$sql
= "
    SELECT a.Naam, a.IDArtiest, g.Genre, t.Taal
    FROM tblArtiest AS a
    LEFT JOIN tblGenre AS g
        ON g.IDGenre = a.IDGenre
    LEFT JOIN tblTaal AS t
        ON t.IDTaal = a.IDTaal
    "
;

?>
 
Joren de Wit

Joren de Wit

04/10/2007 21:13:00
Quote Anchor link
Dat is een prima oplossing.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.