Avatar billede nederbasse Nybegynder
10. november 2004 - 12:48 Der er 6 kommentarer og
1 løsning

Lave en JOIN mellem 3 tabeller

Hejsa

Jeg har 3 tabeller som skal laves en JOIN på og jeg kan ikke få det til at virke.
Tabellerne ser sådan ud:

persom
-------------
person_id (INT)(pk)
name
email
perposition_nr(INT)
perpartner_nr(INT)

partners
----------
partner_nr(INT)(pk)
partner

position
------------
position_nr(INT)(pk)
position

Denne SELECT giver ingen fejl, til gengæld retunere den heller ingen data:
SELECT person.name, person.email, partners.partner, position.position FROM person, partners, position WHERE name LIKE '$name' AND person.perpartner_nr=partners.partner_nr AND person.perposition_nr=position.position

Hvordan laves en JOIN der kan finde alle inf. fra person, partners og position, hvor perpartner_nr er fx. 4 og perposition_nr er fx. 2 og name er en variabel ?
Avatar billede beef12 Nybegynder
10. november 2004 - 12:56 #1
select *
from
person a
left outer join partner b
  on a.perpartner_nr = b.partner_nr
left outer join position c
  on a.perposition_nr = c.position_nr

where
a.name LIKE '%$name%'


Det er fordi at i enten partners eller position er der ingen id der passer til nogen af din personer og så vises ingen rækker når du laver inner eller equal joins
Avatar billede beef12 Nybegynder
10. november 2004 - 13:00 #2
det kunne naturligvis osse være din LIKE der driller... jeg har sat %-tegn på i hver ende således at alt bliver udvalgt, der indeholder noget i din variabel - det er op til dig at vurdere hvordan din LIKE skal fungere præcist
Avatar billede nederbasse Nybegynder
10. november 2004 - 14:55 #3
Jeg har lavet det sådan at hvis der ikke er nogen i databasen der hedder et-eller-andet ECHO'er siden 'Der er ingen et-eller-andet' i databasen.
Avatar billede beef12 Nybegynder
10. november 2004 - 16:41 #4
var der ikke noget af de to ting der virkede?

siden du siger "echo", gætter jeg på at du koder web-siden i php.
så prøv dette:

mysql_query("SELECT person.name, person.email, partners.partner, position.position FROM person, partners, position WHERE name LIKE '$name' AND person.perpartner_nr=partners.partner_nr AND person.perposition_nr=position.position") or die(mysql_error());
Avatar billede beef12 Nybegynder
10. november 2004 - 16:41 #5
får du en fejl nu?
Avatar billede nederbasse Nybegynder
18. november 2004 - 11:26 #6
Skulle lige bruge nogle dage på virus/spyware :-(
Det virker fint med den sql du har skrevet
Avatar billede beef12 Nybegynder
03. december 2004 - 12:20 #7
nå, men så mangler du bare at acceptere mit svar ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester