joinen 3 tabellen met 3de tabel > records

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jack Meyer

Jack Meyer

28/05/2010 15:47:16
Quote Anchor link
Hey ik ben bezig met een adres pagina te maken.

.. = tabel
... = row
[structuur]
..[user]
...[id]
...[naam]
...[achternaam]

..[adres]
...[id]
...[adres]
...[postcode]
...[woonplaats]

..[telefoon]
...[id]
...[vast]
...[mobiel]

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM xp_users U LEFT JOIN xp_adres ON U.us_userID=xp_adres.ad_ID LEFT JOIN xp_phone ON xp_adres.ad_ID=xp_phone.ph_ID;


nou stuit ik op het volgende,

wil ik dus van user.id

naam 1 x + achternaam goed

b.v. meerdere telefoon nummers tonen maar krijg telkens maar 1 query te zien
de eerste row

als iemand me kan helpen zou het echt te gek zijn, ook al op mysql.com na geslagen maar kwam er ook niet echt uit.


m.v.g Jack
Gewijzigd op 28/05/2010 15:54:11 door Tom Beuckelaere
 
PHP hulp

PHP hulp

22/12/2024 18:17:35
 
Tom Beuckelaere

Tom Beuckelaere

28/05/2010 16:00:51
Quote Anchor link
Jack,

Als ik het goed voor heb, zul je ergens gebruik moeten maken van een RIGHT JOIN of een INNER JOIN.
Ik kan ook volledig fout zitten maar je kunt misschien wel eens iets als dit gaan proberen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM xp_users U LEFT JOIN xp_adres ON U.us_userID=xp_adres.ad_ID RIGHT JOIN xp_phone ON xp_adres.ad_ID=xp_phone.ph_ID;


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM xp_users U LEFT JOIN xp_adres ON U.us_userID=xp_adres.ad_ID INNER JOIN xp_phone ON xp_adres.ad_ID=xp_phone.ph_ID;
Gewijzigd op 28/05/2010 16:01:05 door Tom Beuckelaere
 
Joren de Wit

Joren de Wit

28/05/2010 16:33:42
Quote Anchor link
Waar zijn de foreign keys in je adres en telefoon tabel? Een adres hoor bij een user, dus daar mis je een kolom user_id. Hetzelfde geldt voor de telefoon tabel, daar mis je een kolom adres_id.

Deze foreign keys gebruik je vervolgens in je joins. Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
JOIN adres ON adres.user_id = user.id
JOIN telefoon ON telefoon.adres_id = adres.id
 
Jack Meyer

Jack Meyer

30/05/2010 18:08:51
Quote Anchor link
Tom:
Jack,

Als ik het goed voor heb, zul je ergens gebruik moeten maken van een RIGHT JOIN of een INNER JOIN.
Ik kan ook volledig fout zitten maar je kunt misschien wel eens iets als dit gaan proberen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM xp_users U LEFT JOIN xp_adres ON U.us_userID=xp_adres.ad_ID RIGHT JOIN xp_phone ON xp_adres.ad_ID=xp_phone.ph_ID;


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM xp_users U LEFT JOIN xp_adres ON U.us_userID=xp_adres.ad_ID INNER JOIN xp_phone ON xp_adres.ad_ID=xp_phone.ph_ID;


Tom,

Bedankt voor je reactie, heb het op beide manieren geprobeerd.
Helaas nog steeds een enkel telefoon nummer.

M.v.g. Jack
 
Joren de Wit

Joren de Wit

30/05/2010 18:11:30
Quote Anchor link
Dat is niet zo vreemd, de foreign keys ontbreken in je tabellen. De JOINs die je nu uitvoert slaan dus ook helemaal nergens op, zie mijn vorige reactie...
 
Jack Meyer

Jack Meyer

31/05/2010 14:11:43
Quote Anchor link
Blanche PHP op 30/05/2010 18:11:30:
Dat is niet zo vreemd, de foreign keys ontbreken in je tabellen. De JOINs die je nu uitvoert slaan dus ook helemaal nergens op, zie mijn vorige reactie...


Blance,

Heb indd ook jou idee in uit voering gebracht

okay dit heb ik nu,

.. = tabel
... = row
[structuur]
..[user]
...[id][PK]
...[naam]
...[achternaam]

..[adres]
...[id][PK]
...[ad_childID][FK]
...[adres]
...[postcode]
...[woonplaats]

FOREIGN KEY ad_childID REFERENCES user.ID

..[telefoon]
...[id][PK]
...[ph_childID][FK]
...[vast]
...[mobiel]
FOREIGN KEY ph_childID REFERENCES user.ID

/****************************************/

heb dus nu de volgende query:


$query="SELECT * FROM
xp_users U, xp_adres A, xp_phone P
WHERE U.us_userID = P.ph_childID AND P.ph_childID = U.us_userID = 1
JOIN A ON U.us_userID=A.ad_childID
JOIN P ON A.ad_childID=P.ph_childID;";

$query2=mysql_query($query) or die("Could not get query <br />Code : " . mysql_error());

$mysqlGet=mysql_fetch_object($query2);

!Result!

Code : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN A ON U.us_userID=A.ad_childID JOIN P ON A.ad_ID=P.ph_childID' at line 4 File line:90

/****************************************/

na enigszins wat puzzelen heb ik met deze query wel results, maar wel enkel

$query="SELECT * FROM xp_users U, xp_phone P, xp_adres A WHERE P.ph_childID=U.us_userID=P.ph_childID='1' AND A.ad_childID=U.us_userID=P.ph_childID='1' ORDER BY P.ph_nummer DESC";
$query2=mysql_query($query) or die("Could not get query <br />Code : " . mysql_error());

result:
$table[xp_user] 1 ]
Jack Meyer
$table[xp_adres]
XXXXstraat 13 9700 AA
Groningen
$table[xp_phone]
06-XXXXXXXX = ORDER BY P.ph_nummer DESC
!!vast nummer alleen op deze manier te zien
050-XXXXXXX = ORDER BY P.ph_nummer ASC.

/****************************************/

Okay heb wel een result maar zoals uit gelegd nog niet het gewenste,
Hopelijk heb ik wel iets in de betere richting gedaan M.B.T. FOREIGN KEY

M.V.G. J Meyer
Gewijzigd op 31/05/2010 14:32:29 door Jack Meyer
 
Joren de Wit

Joren de Wit

31/05/2010 14:36:00
Quote Anchor link
Het lijkt mij dat een telefoonnummer gekoppeld is aan een adres, dus de FK in die tabel moet verwijzen naar de adres tabel:

users
-----
id
naam
achternaam

adres
-----
id
user_id
adres
postcode
woonplaats

telefoon
-------
id
adres_id
telefoonnummer
type (vast, mobiel, etc...)

Om dat vervolgens de voor en achternaam met bijbehorende telefoonnummers van de user met id 99 op te halen, gebruik je deze query:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
  u.voornaam,
  u.achternaam,
  t.telefoonnummer,
  t.type
FROM
  users u
INNER JOIN
  adres a
    ON a.user_id = u.id
INNER JOIN
  telefoon t
    ON t.adres_id = a.id
 



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.