10. november 2004 - 12:48Der 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 ?
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
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
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());
nå, men så mangler du bare at acceptere mit svar ;-)
Synes godt om
Ny brugerNybegynder
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.