Ik heb deze database structuur voor een site:
PRODUCTEN
id
titel
omschrijving
SUBCATS
id
product_id
titel
omschrijving
PRIJZEN
id
subcats_id
aantal
prijs
Hoop dat het een beetje duidelijk is hoe de tabellen samenhangen wat betreft foreign keys:
SUBCATS.product_id -> PRODUCTEN.id
PRIJZEN.subcats_id -> SUBCATS.id
Het gaat dit om dit soort producten:
Ok hopelijk is dit een beetje duidelijk.
Wat ik dus wil, is dmv een join met 1 query alle info ophalen van product èn alle subcategorien mèt de daarbij behorende aantallen/prijzen. Dit is wat ik heb:
Dat werkt in principe prima, alleen vraag ik me af of dit efficienter kan. Ik ben nogal een n00b op het gebied van joins, maar volgens mij krijg ik nu veel meer output dan ik nodig heb. Want nu staat toch in iedere row weer bijvoorbeeld de titel van het product en de omschrijving en de bijzonderheden + van de subcategorie de titel en de omschrijving etc.
En dat terwijl ik zoiets als de titel van het product maar 1x hoef te weten. Vandaar dat ik me afvraag of het efficienter kan, en of mijn query een beetje handig is.
En op welke manier zou ik dit nou het snelst uit kunnen lezen in PHP?
Ik hoop dat het allemaal een beetje duidelijk is, thnx in advance.
PRODUCTEN
id
titel
omschrijving
SUBCATS
id
product_id
titel
omschrijving
PRIJZEN
id
subcats_id
aantal
prijs
Hoop dat het een beetje duidelijk is hoe de tabellen samenhangen wat betreft foreign keys:
SUBCATS.product_id -> PRODUCTEN.id
PRIJZEN.subcats_id -> SUBCATS.id
Het gaat dit om dit soort producten:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| Product
subcategorienaam1 aantal1
aantal2
aantal3
subcategorienaam2 aantal1
aantal2
aantal3
subcategorienaam3 aantal1
aantal2
aantal3 |
Ok hopelijk is dit een beetje duidelijk.
Wat ik dus wil, is dmv een join met 1 query alle info ophalen van product èn alle subcategorien mèt de daarbij behorende aantallen/prijzen. Dit is wat ik heb:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| "SELECT
A.titel,
A.omschrijving,
B.id,
B.titel,
B.info,
C.id,
C.aantal,
C.prijs
FROM
prod_gg A,
subcat B,
prijzen C
WHERE
C.subcat_id = B.id AND B.prod_id = A.id AND A.id = '$id'"; |
Dat werkt in principe prima, alleen vraag ik me af of dit efficienter kan. Ik ben nogal een n00b op het gebied van joins, maar volgens mij krijg ik nu veel meer output dan ik nodig heb. Want nu staat toch in iedere row weer bijvoorbeeld de titel van het product en de omschrijving en de bijzonderheden + van de subcategorie de titel en de omschrijving etc.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| +=====+=====+===+=====+=====+===+=====+=====+ | foo | bar | 1 | baz | bo1 | 1 | 100 | 200 | +-----+-----+---+-----+-----+---+-----+-----+ | foo | bar | 1 | baz | bo2 | 2 | 200 | 400 | +-----+-----+---+-----+-----+---+-----+-----+ | foo | bar | 1 | baz | bo3 | 3 | 300 | 600 | +-----+-----+---+-----+-----+---+-----+-----+ | foo | bar | 2 | bay | bo4 | 4 | 100 | 300 | +-----+-----+---+-----+-----+---+-----+-----+ | foo | bar | 2 | bay | bo5 | 5 | 200 | 600 | +-----+-----+---+-----+-----+---+-----+-----+ | foo | bar | 2 | bay | bo6 | 6 | 300 | 900 | +-----+-----+---+-----+-----+---+-----+-----+ | foo | bar | 3 | bax | bo7 | 7 | 100 | 400 | +-----+-----+---+-----+-----+---+-----+-----+ | foo | bar | 3 | bax | bo8 | 8 | 200 | 800 | +-----+-----+---+-----+-----+---+-----+-----+ | foo | bar | 3 | bax | bo9 | 9 | 300 | 1200| +=====+=====+===+=====+=====+===+=====+=====+ |
En dat terwijl ik zoiets als de titel van het product maar 1x hoef te weten. Vandaar dat ik me afvraag of het efficienter kan, en of mijn query een beetje handig is.
En op welke manier zou ik dit nou het snelst uit kunnen lezen in PHP?
Ik hoop dat het allemaal een beetje duidelijk is, thnx in advance.