2 tabellen vergelijken.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen@insomniac.n st

[email protected] st

16/09/2007 13:44:00
Quote Anchor link
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.
 
PHP hulp

PHP hulp

27/04/2024 13:36:50
 
Kalle P

Kalle P

16/09/2007 14:00:00
 
Jeroen@insomniac.n st

[email protected] st

16/09/2007 16:08:00
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
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.
Gewijzigd op 01/01/1970 01:00:00 door [email protected] st
 
Dirk

Dirk

16/09/2007 17:14:00
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM artikelen WHERE actief = ja
 
Jeroen@insomniac.n st

[email protected] st

16/09/2007 17:31:00
Quote Anchor link
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
Gewijzigd op 01/01/1970 01:00:00 door [email protected] st
 
Dirk

Dirk

17/09/2007 09:40:00
Quote Anchor link
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!
 
Klaasjan Boven

Klaasjan Boven

17/09/2007 10:38:00
Quote Anchor link
Dirk hij heeft juist het juiste datamodel. Actief is een eigenschap van artikel en wordt dus in een aparte tabel opgeslagen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
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
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
- wes  -

- wes -

17/09/2007 10:39:00
Quote Anchor link
Ik zou dan btw een ENUM gebruiken

(of dit of dat maar niet anders, bijv voor aanhef, status etc velden)
 
Robert Deiman

Robert Deiman

17/09/2007 11:21:00
Quote Anchor link
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
 



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.