PHP Joinen van variabelen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Olivier Peeters

Olivier Peeters

01/04/2012 23:29:54
Quote Anchor link
Hallo iedereen,

ik ben tegen tijdens het programeren tegen een probleem aangelopen. Ik wou eens wat testen met joins.
Ik heb 3 tabellen in mijn MySQL database: `a5852590_1`.`Atleten`, `a5852590_1`.`Disciplines` & `a5852590_1`.`Beker van Vlaanderen`

In tabel `a5852590_1`.`Beker van Vlaanderen` zijn er de kolommen id, id_atleet, id_discipline1, id_discipline2, id_discipline3
In tabel `a5852590_1`.`Disciplines` zijn er de kolommen id, Naam
In tabel `a5852590_1`.`Atleten` zijn er de kolommen id, Naam, Voornaam

Dus ik moet eerst alle gegevens uit tabel 1 (`a5852590_1`.`Beker van Vlaanderen`) halen. Daarna wil ik:
`Atleten`.`Naam`, `Atleten`.`Voornaam` FROM `a5852590_1`.`Atleten` WHERE `Atleten`.`id`=`Beker van Vlaanderen`.`id_atleet`

Voor elke ingevulde id_discipline [1,2,3] => `Discipline`.`Naam` FROM `a5852590_1`.`Disciplines` WHERE `Disciplines`.`id`=`Beker van Vlaanderen`.`id_discipline [1,2 of 3]`

Ik heb dit geprobeerd met:
$sql = "SELECT `Beker van Vlaanderen`.`id_atleet`, `Beker van Vlaanderen`.`id_discipline1`, `Disciplines`.`id`, `Disciplines`.`Naam`, `Atleten`.`id`
FROM `a5852590_1`.`Atleten`, `a5852590_1`.`Disciplines`, `a5852590_1`.`Beker van Vlaanderen`
WHERE `Disciplines`.`id`=`Beker van Vlaanderen`.`id_discipline1` OR `Disciplines`.`id`=`Beker van Vlaanderen`.`id_discipline2` OR `Disciplines`.`id`=`Beker van Vlaanderen`.`id_discipline3`

Dit lukt echter niet, volgens mij omdat de kolomnamen Naam in tabel Atleten en tabel Disciplines dezelfde zijn.
Wie kent er een oplossing voor mijn probleem?

Groetjes,
Olivier
 
PHP hulp

PHP hulp

22/12/2024 11:04:02
 
B a s
Beheerder

B a s

02/04/2012 00:15:30
Quote Anchor link
Watvoor result krijg je?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

02/04/2012 08:57:57
Quote Anchor link
Als je dezelfde tabel wilt joinen op 3 kolommen moet je hem 3x joinen, dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
    bvv.id_atleet,
    d1.naam AS d1naam,
    d2.naam AS d2naam,
    d3.naam AS d3naam,
    a.naam
FROM
    beker_van_vlaanderen AS bvv
JOIN disciplines AS d1 ON d1.id = bvv.id_discipline1
JOIN disciplines AS d2 ON d2.id = bvv.id_discipline2
JOIN disciplines AS d3 ON d3.id = bvv.id_discipline3
JOIN atleten AS a ON  a.id = bvv.id_atleet

Ik neem aan dat alle 3 de disciplines ingevuld moeten zijn anders moet je left join gebruiken. En gebruik geen spaties in tabelnamen, ben je gelijk van die stomme backticks af.
 
Olivier Peeters

Olivier Peeters

02/04/2012 10:21:21
Quote Anchor link
Hallo iedereen,

met onderstaande code is het gelukt:
"SELECT
`Atleten`.`Voornaam` AS Voornaam,
`Atleten`.`Naam` AS Naam,
d1.`Naam` AS `Discipline1` ,
d2.`Naam` AS `Discipline2` ,
d3.`Naam` AS `Discipline3`
FROM BvV
INNER JOIN Atleten ON `BvV`.`id_atleet` = `Atleten`.`id`
INNER JOIN Disciplines AS d1 ON `BvV`.`id_discipline1` = d1.`id`
INNER JOIN Disciplines AS d2 ON `BvV`.`id_discipline2` = d2.`id`
LEFT JOIN Disciplines AS d3 ON `BvV`.`id_discipline3` = d3.`id`"

Weer wat bijgeleerd ;-) Bedankt voor alle hulp!

Groeten,
Olivier
 



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.