MySQL probleem met foreign key data

Status
Niet open voor verdere reacties.

MrSvennie93

Gebruiker
Lid geworden
23 sep 2011
Berichten
101
Hallo,

Ik heb de volgende structuur. Van artikelen hou ik de voorraad bij.

ERD.png

En nu wil ik van elk artikel de voorraad erbij. Een artikel die geen voorraad heeft, komt met zn artnr niet voor in de voorraad tabel.
Ik heb een query geschreven alleen het probleem is dat deze query alleen de artikelen toont met de voorraad die ook in de tabel Voorraad voorkomt.

[sql]SELECT M.ARTNR, M.FABRIKANT, M.OMSCHRIJVING, M.GESCHIKT_VOOR, SUM(V.AANTAL) AS AANTAL, M.FOTO
FROM ARTIKELMINIATUUR M, VOORRAAD V
WHERE M.CATEGORIE = 'aandrijvingmotor' AND M.ARTNR = V.ARTNR;[/sql]

En wat ik wil is dat alle artikelen getoond worden en waarbij er geen voorraad is, de voorraad 0 wordt gegeven. Ik dacht zelf aan een query maar ik weet niet hoe ik dat op moet lossen.
Wie weet raad?

Mvg,

Sven
 
Laatst bewerkt door een moderator:
Je kan deze toch gewoon de Where clausule uitbreiden met AND V.aantal = 0 ?
 
Kun je laten zien wat je precies terug krijgt?
Vanwaar overigens die hoofdletter gekte? :p
 
Dat is een gewenning. Die AND V.AANTAL = 0 kan niet, want als er nog geen voorraad is is er nog geen record met dat artikelnummer aanwezig.

output-null.png

Dit krijg ik als output
 
Probeer het volgende eens :

Code:
WHERE M.CATEGORIE = 'aandrijvingmotor' AND (M.ARTNR = V.ARTNR OR V.aantal = 0);
 
Hij geeft nog steeds hetzelfde. alleen de artikelen waarvan er een voorraad is geregistreerd wordt weergeven.
 
Probleem is inmiddels opgelost.

Code:
SELECT M.ARTNR, M.FABRIKANT, M.OMSCHRIJVING, M.GESCHIKT_VOOR, (SELECT COALESCE(sum(AANTAL), 0) AS AANTAL from VOORRAAD WHERE ARTNR = M.ARTNR) AS AANTAL, M.FOTO 
FROM ARTIKELMINIATUUR M 
WHERE M.CATEGORIE = 'aandrijfmotor'";

Door die select met coalesce ga ik per gevonden artnr vragen wat de voorraad is. Als de sum null returnt wordt er nul weergegeven.

Mvg,

Sven
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan