login  Naam:   Wachtwoord: 
Registreer je!
 Forum

PM-systeem

Offline MothZone - 10/01/2006 18:33
Avatar van MothZonePHP ver gevorderde 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:
  1. SELECT
  2. `users`.`user`,
  3. `berichten`.`fid`,
  4. `berichten`.`tid`,
  5. `berichten`.`date`,
  6. `berichten`.`sub`,
  7. `berichten`.`msg`
  8. FROM
  9. `berichten`,
  10. `users`
  11. WHERE
  12. `berichten`.`id` = '{$iId}'
  13. AND
  14. `users`.`id` = `berichten`.`fid`
  15. AND
  16. `users`.`id` = `berichten`.`tid`
  17. AND (
  18. `berichten`.`fid` = '{$this->iUser_id}'
  19. OR
  20. `berichten`.`tid` = '{$this->iUser_id}'
  21. )


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?

10 antwoorden

Gesponsorde links
Offline Stijn - 10/01/2006 18:37
Avatar van Stijn PHP expert FROM berichten INNER JOIN users ON bericht.id=users.id

gebruik JOINS bij meerdere tabellen 
Offline MothZone - 10/01/2006 18:43 (laatste wijziging 10/01/2006 19:46)
Avatar van MothZone PHP ver gevorderde Jaja, maar het werkte met 1 id en 2 tabellen met een where ook, dusjah.
En hoe moet ik dit dan met joins doen?
Ik moet 2 usernames uitkomen he...

edit Heb het nu werkend gekregen met 2 query's, maar kan dit ook met 1?
Offline Stijn - 10/01/2006 19:49
Avatar van Stijn PHP expert natuurlijk... Ooit eens de tutorial gelezen van INNER JOINS (denk het niet hé )
Offline MothZone - 10/01/2006 19:58
Avatar van MothZone PHP ver gevorderde Ja, en heb die ook geprobeert, alleen werkte deze nooit:s
Offline Stijn - 10/01/2006 20:11
Avatar van Stijn PHP expert Toon eens je INNER JOIN query dan? Geeft het ook een error in Phpmyadmin?
Offline MothZone - 10/01/2006 22:38 (laatste wijziging 11/01/2006 18:43)
Avatar van MothZone PHP ver gevorderde Ik heb deze query nu geprobeerd:
  1. SELECT
  2. `users`.`user` as `user1`,
  3. `users`.`user` as `user2`,
  4. `berichten`.`date`,
  5. `berichten`.`sub`,
  6. `berichten`.`msg`
  7. FROM
  8. `berichten`
  9. INNER JOIN
  10. `users`
  11. ON
  12. `users`.`id` = `berichten`.`fid`
  13. ON
  14. `users`.`id` = `berichten`.`tid`
  15. WHERE
  16. `berichten`.`id` = '5'
  17. AND (
  18. `berichten`.`fid` = '1'
  19. OR
  20. `berichten`.`tid` = '1'
  21. )

En geeft deze error in PhpMyAdmin:
Citaat:
#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 
Offline Wim - 11/01/2006 18:51 (laatste wijziging 11/01/2006 18:55)
Avatar van Wim Crew algemeen
  1. SELECT
  2. `users`.`user` as `user1`,
  3. `users`.`user` as `user2`,
  4. `berichten`.`date`,
  5. `berichten`.`sub`,
  6. `berichten`.`msg`
  7. FROM
  8. `berichten`
  9. INNER JOIN
  10. `users`
  11. ON
  12. `users`.`id` = `berichten`.`fid`
  13. AND
  14. `users`.`id` = `berichten`.`tid`
  15. AND
  16. `berichten`.`id` = '5'
  17. AND (
  18. `berichten`.`fid` = '1'
  19. OR
  20. `berichten`.`tid` = '1')
  21. )


EDIT:
volgende notatie krijgt bij mij de voorkeur:
  1. SELECT users.user as user1, users.user as user2, berichten.date, berichten.sub, berichten.msg
  2. FROM users
  3. INNER JOIN berichten
  4. ON (users.id = berichten.fid)
  5. AND (users.id = berichten.tid)
  6. AND (berichten.id = '5')
  7. AND (berichten.fid = '1' OR `berichten`.`tid` = '1')


EDIT2:
Citaat:
users.user as user1, users.user as user2

wat voor nut heeft dat? users.user en users.user is hetzelfde -> user1 = user2?
Offline MothZone - 11/01/2006 19:24 (laatste wijziging 11/01/2006 19:25)
Avatar van MothZone PHP ver gevorderde Hij doet nog altijd niet wat ik wil 
En van die user, ik heb al gezegt, dat ik 2 usernames wil uitkomen, die van fid en die van tid.

Ik zal anders ff een voorbeeld geven om het te verduidelijken.

  1. Berichten:
  2. +----+-----+-----+
  3. | id | fid | tid |
  4. +----+-----+-----+
  5. | 1 | 4 | 2 |
  6. +----+-----+-----+
  7.  
  8. Users:
  9. +----+-------+
  10. | id | user |
  11. +----+-------+
  12. | 2 | User1 |
  13. | 4 | User2 |
  14. +----+-------+


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.
Offline Wim - 11/01/2006 22:00
Avatar van Wim Crew algemeen `users`.`user` as `user1`,
`users`.`user` as `user2`,

da's toch 2 keer dezelfde kolom zeker 
Offline MothZone - 11/01/2006 22:07 (laatste wijziging 11/01/2006 22:11)
Avatar van MothZone PHP ver gevorderde Jah, maar kon geen andere manier bedenken (die 2de was ff als test, voor als het ooit eens werkte ofzo)

Heb trouwens nog wat aan t proberen geweest.
Nu heb ik deze code:
  1. SELECT users.user, berichten.date, berichten.sub, berichten.msg
  2. FROM users
  3. INNER JOIN berichten ON ( users.id = berichten.fid )
  4. OR (
  5. users.id = berichten.tid
  6. )
  7. WHERE (
  8. berichten.id = '5'
  9. )
  10. AND (
  11. berichten.fid = '1'
  12. OR `berichten`.`tid` = '1'
  13. )


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.

Hoe kan ik dit in 1 rij krijgen dan?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.237s