[PHP & MySQL] 2 relaties naar 1 tabel

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TheovdS
  • Registratie: Oktober 2004
  • Laatst online: 16-01 02:24
Vorige topic liep niet goed, het probleem was niet echt duidelijk. Ik heb hoop het nu beter te kunnen uitleggen :)

Situatie
Bij een boer wordt melk opgehaald, door een melkrijder.

Ik heb 2 tabellen
Tabellen

Opgehaalde melk:
code:
1
2
3
4
    ophaal_id
    ophaal_melkrijder
    ophaal_boer
    ophaal_datum


Tabel met personen (verschillende soorten)
code:
1
2
3
4
5
    persoon_id
    persoon_naam
    persoon_naw
    enz.
    persoon_soort (boer of melkrijder)



'Relaties'
ophaal.ophaal_boer => personen.persoon_id WHERE persoon_soort = 'boer'
ophaal.ophaal_melkrijder=> personen.persoon_id WHERE persoon_soort = 'melkrijder'

In de tabel ophaal, liggen dus 2 relaties naar de tabel personen, maar hoe krijg ik het voor elkaar om dat in PHP & SQL te voorschijn te toveren :?

PHP & SQL
Ik dacht zoiets als:

SQL:
1
2
3
4
5
6
7
SELECT * FROM ophaal
  
  NNER JOIN personen
    ON (ophaal.ophaal_boer = personen.persoon_id)

 INNER JOIN personen
    ON (ophaal.ophaal_medewerker = personen.persoon_id)  


Ik wilde dat op de volgende manier 'echoen':
PHP:
1
2
3
4
while($var = $db->sql_result()) {
  echo 'Boer: ' .var->persoon_naam;
  echo 'Melkrijder: ' .var->persoon_naam;
}


Probleem
Bovenstaande code werkt dus niet, omdat ik 2 keer gegevens uit de tabel 'personen' wil halen. En ik wil die 2 keer 'echoen' d.m.v. '$var->persoon_naam'.

Ik ben er al achter gekomen, dat het met aliassen moet, zoiets als:
SQL:
1
2
3
4
5
6
7
8
9
10
SELECT 
  *,
  melkrijders.persoon_naam AS melkrijder_naam 
FROM ophaal
  
  INNER JOIN personen
    ON (ophaal.ophaal_boer = personen.persoon_id)

 INNER JOIN personen AS melkrijders
    ON (ophaal.ophaal_melkrijder = personen.persoon_id)  

Maar ik kom er niet uit, kan iemand zeggen wat ik fout doet?

[ Voor 5% gewijzigd door TheovdS op 29-03-2006 20:04 ]


Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Het lijkt me dat je zo inderdaad de goede kant op gaat, waar loop je vast?
Je snapt dat je "echo $var->melkrijder_naam" moet doen bijvoorbeeld?

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 23-06 13:51

NMe

Quia Ego Sic Dico.

Je zal aliassen moeten maken voor elk apart veld dat je op wil halen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • TheovdS
  • Registratie: Oktober 2004
  • Laatst online: 16-01 02:24
blizt schreef op woensdag 29 maart 2006 @ 20:00:
Het lijkt me dat je zo inderdaad de goede kant op gaat, waar loop je vast?
Je snapt dat je "echo $var->melkrijder_naam" moet doen bijvoorbeeld?
Als ik dit doet, laat hij helemaal niets zien.
-NMe- schreef op woensdag 29 maart 2006 @ 20:01:
Je zal aliassen moeten maken voor elk apart veld dat je op wil halen. :)
k, ga ik proberen

[ Voor 27% gewijzigd door TheovdS op 29-03-2006 20:06 ]


Acties:
  • 0 Henk 'm!

  • TheovdS
  • Registratie: Oktober 2004
  • Laatst online: 16-01 02:24
-NMe- schreef op woensdag 29 maart 2006 @ 20:01:
Je zal aliassen moeten maken voor elk apart veld dat je op wil halen. :)
Yes, het is gelukt met:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT 
  *,
  boeren.persoon_voorletters AS boer_voorletters,
  boeren.persoon_tussenvoegsel AS boer_tussenvoegsel,
  boeren.persoon_achternaam AS boer_achternaam, 
                         
  melkrijders.persoon_voorletters AS melkrijder_voorletters,
  melkrijders.persoon_tussenvoegsel AS melkrijder_tussenvoegsel,
  melkrijders.persoon_achternaam AS melkrijder_achternaam                               
FROM ophaal
  
INNER JOIN personen AS boeren
  ON (ophaal.ophaal_boer = boeren.persoon_id)

INNER JOIN personen AS melkrijders
  ON (ophaal.ophaal_melkrijder = melkrijders.persoon_id)    


Thanx mates _/-\o_ _/-\o_