2 records uit 2 velden samenvoegen

Status
Niet open voor verdere reacties.

ayger

Gebruiker
Lid geworden
5 dec 2011
Berichten
11
In een bedrijfsgids wil ik de locatie van mederwerkers met hun locatie en telefoonnrs tonen
1 naam heeft echter vaak meerdere telefoonnrs (o.a. mobiels)
hoe kan ik dit in de output vertalen?
GROUP BY lukt niet in combinatie van een INNER JOIN en WHERECLAUSE

hieronder voorbeeld:
TABELLEN Mysql database

tabel bureaus ## tabel telefoons
bur_id - naam - locatie ## tel_id - bur_id - telefoonnr

zoekQyery:
if ($zoekbureau != '') {
$whereclause .= "WHERE (naam LIKE '%$zoekbureau%' AND status = 'act' )";
}
else {
$whereclause = '';
}

selectQuery:
"SELECT bur_id, naam, locatie, telefoonnr
FROM bureaus
INNER JOIN telefoon
ON bureaus.bur_id = telefoons.bur_id"
. $whereclause .
"ORDER BY naam ASC" ;

Mijn output laat nu dubbele namen zien van personen die 2 telefoonnummers hebben
bijv:
joyce
hoofdkantoor
telefoon 020-1234567

joyce
hoofdkantoor
telefoon 06-12345678


DISTINCT gebruiken in releatie met GROUP BY dat helpt niet echt, dan krijg ik maar 1 Joyce te zien met 1 telefoonnummer

WAT IK WIL IS:

Joyce
hoofdkantoor
telefoon: 020-1234567, 06-12345678

Heeft iemand misschien een oplossing hiervoor?
dank alvast
ben al 2 dagen combinaties aan het proberen maar het lukt me niet
 
Laatst bewerkt:
Ik denk dat het heel lastig wordt
omdat je database niet goed in elkaar zit.

Normalisatie is niet (goed) toegepast.

Indien mogelijk zouden de tabellen veranderd moeten worden.
 
welke database gebruik je? met mysql kan het eventueel met group_concat
 
database Mysiam

maar op externe server kan ik zowel MySIAM als INNOdb gebruiken
maar het is een op veel relatie
of denk je dat een tussentabel uitkomst kan bieden
CONCAT ken ik maar GROUP-CONCAT niet
 
Laatst bewerkt:
Voor je huidige vraag zou het er ongeveer zo uitzien:

SELECT buro.bur_id, naam,locatie,group_concat(distinct nummer order by nummer desc separator ',') as nummers from buro inner join telefoons on buro.bur_id = telefoons.bur_id

dit geeft:

1 joyce hoofdkantoor 020-1234567,06-12345678

onder voorwaarde dat de nummers opgeslagen zijn als text anders krijg je een blob terug die je zelf nog moet bewerken.
 
dubbele SELECT

Ik ga het nu uitproberen maar omdat ik al een SELECT heb ben ik bang dat de query foutmeldingen geven

het zal dan iets moeten worden als

mijn query's nu:
zoekQyery:
if ($zoekbureau != '') {
$whereclause .= "WHERE (naam LIKE '%$zoekbureau%' AND status = 'act' )";
}
else {
$whereclause = '';
}

selectQuery:
"SELECT bur_id, naam, locatie, telefoonnr
FROM bureaus
INNER JOIN telefoons

GROUP_CONCAT(DISTINCT telefoons ORDER BY telefoonnummer DESC SEPERATOR ',')
AS telefoons FROM bureaus

ON bureaus.bur_id = telefoons.bur_id"
. $whereclause .
"ORDER BY naam ASC" ;
 
Laatst bewerkt:
De group concat gaat in de select ipv je huidige "telefoonnr"
 
Nog niet

het is nog niet gelukt
maar zal er vandaag nog even aan puzzelen.
Ik denk dat als ik meerdere tabellen met telefoonnummers creëer ik deze tabellen dan 1 voor 1 zal aanroepen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan