Hallo,
Ik heb een tabel berichten waar 3 id's instaan (rij-id: id en 2 user-id's: fid, tid).
Nu wil ik in zo weinig mogelijk query's adhv deze de rij-id de usernames ophalen die bij de fid én tid horen.
Ook moet die fid of tid gelijk zijn aan $this->iUser_id.
Ik heb geprobeert dit op deze manier te realiseren:
Maar hier toont hij niets, wat volgens mij ligt aan de WHERE waar users.id gelijk moet zijn aan berichten.fid en tid.
Maar hoe kan ik dit anders doen dan?
SELECT
`users`.`user` as `user1`,
`users`.`user` as `user2`,
`berichten`.`date`,
`berichten`.`sub`,
`berichten`.`msg`
FROM
`berichten`
INNER JOIN
`users`
ON
`users`.`id` = `berichten`.`fid`
ON
`users`.`id` = `berichten`.`tid`
WHERE
`berichten`.`id` = '5'
AND (
`berichten`.`fid` = '1'
OR
`berichten`.`tid` = '1'
)
#1064 - 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 'ON
`users`.`id` = `berichten`.`tid`
WHERE
`berichten`.`id` = '5'
A' at line 13
En zie echt geen andere manier om dit te doen in 1 query
SELECT
`users`.`user` as `user1`,
`users`.`user` as `user2`,
`berichten`.`date`,
`berichten`.`sub`,
`berichten`.`msg`
FROM
`berichten`
INNER JOIN
`users`
ON
`users`.`id` = `berichten`.`fid`
AND
`users`.`id` = `berichten`.`tid`
AND
`berichten`.`id` = '5'
AND (
`berichten`.`fid` = '1'
OR
`berichten`.`tid` = '1')
)
SELECT users.user as user1, users.user as user2, berichten.date, berichten.sub, berichten.msg
FROM users
INNER JOIN berichten
ON (users.id = berichten.fid)
AND (users.id = berichten.tid)
AND (berichten.id = '5')
AND (berichten.fid = '1' OR `berichten`.`tid` = '1')
SELECT users.user as user1, users.user as user2, berichten.date, berichten.sub, berichten.msg
Berichten:
+----+-----+-----+
| id | fid | tid |
+----+-----+-----+
| 1 | 4 | 2 |
+----+-----+-----+
Users:
+----+-------+
| id | user |
+----+-------+
| 2 | User1 |
| 4 | User2 |
+----+-------+
Berichten:
+----+-----+-----+
| id | fid | tid |
+----+-----+-----+
|1|4|2|
+----+-----+-----+
Users:
+----+-------+
| id | user |
+----+-------+
|2| User1 |
|4| User2 |
+----+-------+
Hier wil ik dus uit de database halen: "User1", "User2", en date, sub en msg.
Die user1 en user2 omdat hun id's (2 en 4) de id's zijn (fid, tid) die horen bij het bericht met id 1.
Ook moet bij de query, ofwel tid, ofwel fid een bepaalde waarde hebben.
INNER JOIN berichten ON ( users.id = berichten.fid )
OR (
users.id = berichten.tid
)
WHERE (
berichten.id ='5'
)
AND (
berichten.fid ='1'
OR `berichten`.`tid` ='1'
)
Maar nu toont hij 2 rijen, met allebij hetzelfde in.
Alleen is bij de eerste rij 'user' de user die hoort bij fid, en in de 2de rij 'user' de user die hoort bij de tid.