Verschillende relaties in één query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Lasse

Lasse

05/02/2008 20:53:00
Quote Anchor link
Hallo,

Ik zit met een klein ontwerp-probleem voor mijn query's.
Stel ik heb een tabel vol fietsverkopers in mijn database. Daar is een tabel aan gekoppeld met alle soorten fietsen die de fietsverkopers verkopen.
Je hebt dan dus een veel op veel relatie.

Nu wil ik in een query alle fietsen ophalen die één bepaalde verkoper verkoopt. Bovendien wil ik ook informatie over de naam van de verkoper, het emailadres enzovoort.

Ik kom dan uit op zo'n soort query (dit is uit mijn hoofd, dus er kan een klein typefoutje in zitten):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
    verkoper.naam,
    verkoper.adres,
    fietsen.naam
FROM
    verkoper
    INNER JOIN
        fietsenInteractie
        ON
            verkoper.id = fietsenInteractie.verkoperId
        INNER JOIN
            fietsen
            ON
                fietsen.id = fietsenInteractie.fietsenId
WHERE
    verkoper.id = WAARDE UIT PHP


Hier komen (uiteraard) een heleboel rows uit met allemaal dezelfde informatie over de verkoper, en steeds een andere naam voor de kolom fietsen.naam
Dit is heel lastig te verwerken in php, en bovendien is het een omslachtige manier van data ophalen.

Zelf zou ik zeggen: Maak eerst een query waar je alleen de informatie over de verkoper opvraagt, en vraag dan in een nieuwe query alle fietsen op. Het nadeel hier aan is natuurlijk wel dat je weer twee query's nodig heeft.

Dus mijn vraag is eigenlijk: Is hier een andere oplossing voor?
 
PHP hulp

PHP hulp

27/12/2024 03:05:34
 
PHP Newbie

PHP Newbie

05/02/2008 22:08:00
Quote Anchor link
Koppeltabbelletje:

fiets_id | verkoper_id
 
Jan Koehoorn

Jan Koehoorn

05/02/2008 22:12:00
Quote Anchor link
Ik vraag me af of de TS daar genoeg aan heeft PHP Newbie ;-)
 
Lasse

Lasse

05/02/2008 22:17:00
Quote Anchor link
@PHP Newbie:
Het datamodel is er al (inclusief het koppeltabelletje waar je het over hebt, in mijn query fietsenInteractie genaamd).
Het probleem is nu alleen wat de beste manier is om het uit te lezen.
 
Jan Koehoorn

Jan Koehoorn

05/02/2008 22:22:00
Quote Anchor link
FF een gokje:

SELECT v.naam, f.merk
FROM verkopers AS v, fietsen AS f
RIGHT JOIN koppeltabel AS k
ON v.id = k.verkoper_id
RIGHT JOIN k
ON f.id = k.fiets_id
 
Lasse

Lasse

05/02/2008 22:43:00
Quote Anchor link
Nee, dat geeft nog steeds hetzelfde resultaat.
Het moet iets zijn dat er voor zorgt dat alle fietsen weer in een array zet.
Zodat je als het eenmaal bij php is belandt zo'n soort array hebt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$result
= array('naam' => 'Jan\'s rijwielen',
                'adres' => 'Adriaanslaan 32',
                'fietsen' => array('mannenfiets rood', 'vrouwenfiets blauw', 'tandem zwart'))
?>

Aan zoiets zit ik dan tenminste te denken, maar misschien is er nog wel een andere efficiënte manier, maar anders moet het gewoon met twee query's.

In ieder geval bedankt voor je antwoord!
Gewijzigd op 01/01/1970 01:00:00 door Lasse
 
Lasse

Lasse

06/02/2008 15:36:00
Quote Anchor link
BUMP
 
Jacco Engel

Jacco Engel

06/02/2008 15:38:00
Quote Anchor link
zon 7 uur te vroeg (give or take)
 
Frank -

Frank -

06/02/2008 15:56:00
Quote Anchor link
Lasse schreef op 05.02.2008 20:53:
Nu wil ik in een query alle fietsen ophalen die één bepaalde verkoper verkoopt. Bovendien wil ik ook informatie over de naam van de verkoper, het emailadres enzovoort.
Dat zijn 2 aparte queries of je krijgt bij iedere record weer opnieuw de naam van de verkoper, het email adres van de verkoper, enzovoort. Je zult dan in je weergave moeten controleren of je de gegevens van de verkoper al hebt getoond, zo ja, dan niet nogmaals tonen.

Met 2 aparte queries ben je beter af, 1 om de gegevens de verkoper op te halen en 1 om de fietsen van deze verkoper op te halen. Dat zou ook nog wel eens sneller kunnen zijn, de queries worden eenvoudiger. Het maakt tevens de weergave een stuk eenvoudiger.
 
Lasse

Lasse

06/02/2008 16:29:00
Quote Anchor link
Oke, dankje voor het antwoord!
Ik dacht dat er misschien nog een betere manier zou zijn, maar dan gaan we het doen met twee query's.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.