Hoi,
ik heb een database met verschillende tabellen (8).
Bij deze o.a. een met artikel gegevens en 1 met status, wel of niet actief, gegevens. Nu is het zo dat als een artikel niet actief is z'n id niet voorkomt in de status table.
Ik wil graag een overzicht maken van alle artikelen die niet actief zijn. Dus waar de artikelen.id niet voorkomt in table status.

Waarschijnlijk heel simpel, maar ik kom er niet uit.
dank je voor je snelle antwoord, en de link naar de site. Duidelijke uitleg daar.

Maar ik kom er nog niet uit.
Ik snap niet hoe ik de artikelen uit de ene tabel kan selecteren als ze in de andere niet voorkomen.

SELECT artikelen.kort , artikelen.id , actief.art_id,actief.aan,actief.klant_id,artikelen.art_nummer
FROM `actief` left join `artikelen` ON actief.art_id =artikelen.id 
WHERE actief.klant_id =30 and groep_id=19 and actief.groep_id=artikelen.spec_subgroep_id


hiermee kan ik de artikelen selecteren die acief zijn, van een bepaald persoon en in een speciefeke groep vallen. maar ik wil juist de niet acieve.
Klopt je datamodel wel? Ik zie nog niet in waarom je een aparte tabel maakt waarin je zet of een artikel wel of niet actief is. Dit kan je toch veel makkelijker als aparte kolom in je tabel 'artikelen' zetten?

Wanneer je dat hebt gedaan is het zo simpel als


SELECT * FROM artikelen WHERE actief = ja
dat komt omdat er ruim 30 verschillende klanten zijn die allemaal hun gegevens uit die ene artikel table willen halen.
Een artikel in de table artikelen is altijd beschikbaar, alleen de klant kan aangeven of hij het wel of niet wil tonen.

Dus in de table actief staat het atikel_id, klant_id,artikel_groep_id. groep_id is voor bepaalde producten die in een sub groep voorkomen maar ook in een thema groep. Als de klant dan de thema groep uit heeft staan, kan hij wel het artikel tonen in z'n subgroep.

schematisch:

table actief
-artikel_id
-klant-id
-groep_id

table klant
-id
-naam
-adres etc

table artikel
-id
-artikel_nummer
-prijs
-omschrijving
-etc


Snap nog niet helemaal wat je bedoelt, maar kan je niet bij je tabel 'actief' een extra veld toevoegen 'actief' (ja of nee)? Daar kun je vervolgens op selecteren.

Toch blijf ik erbij dat je datamodel niet helemaal klopt: een extra tabel maken om artikelen wel of niet te laten zien lijkt me niet correct hoor!
Dirk hij heeft juist het juiste datamodel. Actief is een eigenschap van artikel en wordt dus in een aparte tabel opgeslagen.


SELECT jouwdingen 
FROM artikelen 
WHERE id 
NOT IN (SELECT id FROM status)


Eigenlijk moet het id van een artikel altijd in de tabel actief voorkomen met een varchar van 1 byte

tabel actief
id INT
artikel_id INT
status VARCHAR 1 (j of n)

meer mag er niet voorkomen in de tabel actief


Ik zou dan btw een ENUM gebruiken

(of dit of dat maar niet anders, bijv voor aanhef, status etc velden)
Wil je de ins en outs van de JOIN nog eens rustig nalezen, maar dan in het Nederlands, dat kan ook op deze site:

KLIK

Reageren