SQL Selectie maken

Status
Niet open voor verdere reacties.

harolda1980

Gebruiker
Lid geworden
7 aug 2007
Berichten
488
Ik heb een tabel met fabrikanten(tblFabrikanten) welke linken aan de tabel merken(tblMerken). Nu wil de Lege fabrikanten verwijderen of selecteren die dus geen merk onder zich hebben.

Hoe ga ik dit doen in een SQL syntax
 
Je selecteert alle fabrikanten waarvoor er niet een merk bestaat.

Dus zoiets:

[sql]
SELECT *
FROM tblFabrikanten
WHERE NOT EXISTS ( SELECT * FROM tblMerken WHERE tblMerken.fabrikant_id = tblFabrikanten.id )
[/sql]
 
Oke die heb ik nu helemaal door. Dan heb ik de volgende vraag aangezien ik nu een stuk verder ben maar wel een zelfde soort selectie zoek.

Ik heb nu alle fabrikanten en merken opgeruimd. En nu heb ik een artikel die ik alle maal heb opgeruimd en om dit af te maken wil ik graag een selectie hebben waarbij:

Een artikel(tblArtikel) geen afname(tblAfname) heeft en ook geen prijs(tblPrijs).

Hoe selecteer ik die?
 
Als je met SQL Server werkt, is dit de manier
(ervan uitgaande dat ik de juiste tabelvelden neem)

[SQL]SELECT *
FROM tblArtikel
WHERE ID NOT IN (
SELECT Artikel_id
FROM tblAfname
UNION -- Distinct by default, only unique values remain
SELECT Artikel_id
FROM tblPrijs
)[/SQL]

De subquery Haalt alle ArtikelID's op uit tblAFname, en tblPrijs
Dankzij het UNION commando worden de resultaten van de twee queries met elkaar vergeleken, en alle dubbele waarden eruit gehaald.
deze worden vergeleken met ID van tbl_artikel

hopelijk lukt het je zo.
 
Laatst bewerkt:
Bedankt de essentie heb ik nu door en daar ga ik straks eens mee aan de slag en dat laat ik de uitkomst weten!
 
Access kent ook een union command zie ik op google, dus probeer het maar eens zo:

[SQL]
SELECT *
FROM tblArtikel A
WHERE NOT EXISTS (
SELECT Artikel_id
FROM tblAfname
WHERE tblAfname.Artikel_id = A.ID
UNION
SELECT Artikel_id
WHERE tblAfname.Artikel_id = A.ID
FROM tblPrijs
)
[/SQL]

De IN clausule werkt niet in msaccess?
 
Laatst bewerkt:
Code:
SELECT tblArtikel.* FROM tblArtikel WHERE NOT EXISTS (SELECT Artikel_id  FROM  tblAfname WHERE  tblAfname.ArtikelafnameID = tblArtikel.ArtikelID UNION SELECT  Artikel_id WHERE  tblprijs.ArtikelID =  tblArtikel.ArtikelID FROM tblPrijs)

Ik krijg de melding deze bewerking is niet toegestaan in subquery's. Ik heb even de juiste tabellen en kolommen ingevuld.
 
Access sql vereist een andere aanpak, en daar ben ik niet zo bekend mee. dan maar
Code:
SELECT tblArtikel.* FROM tblArtikel WHERE NOT EXISTS(SELECT Artikel_id FROM tblAfname WHERE tblAfname.ArtikelafnameID = tblArtikel.ArtikelID) AND	NOT EXISTS ( SELECT Artikel_id FROM tblPrijs WHERE tblprijs.ArtikelID = tblArtikel.ArtikelID)

geformatteerd:
[SQL]SELECT tblArtikel.*
FROM tblArtikel
WHERE NOT EXISTS (
SELECT Artikel_id
FROM tblAfname
WHERE tblAfname.ArtikelafnameID = tblArtikel.ArtikelID)
AND NOT EXISTS (
SELECT Artikel_id
FROM tblPrijs
WHERE tblprijs.ArtikelID = tblArtikel.ArtikelID
)
[/SQL]
 
Laatst bewerkt:
Na alle selecties werken. Maar nu heb ik nog een volgende vraag.

Wanneer er meerdere gelijke artikelen zijn(zelfde artikelnummer en merk) hoe kan ik die samenvoegen. Dat er 1 artikel overblijft.

Waarbij in de tabel tblPrijs alle prijzen linken aan het juiste artikel en hetzelfde in de tblafname.



Bij tblartikel zijn 3 kolommen belangrijk om het artikel te selecteren wat over dient te blijven, de kolommen zijn:

  1. Artikelrekeneenheidtype
  2. Artikelpl
  3. hlinhoud

Dubbelen ontstaan door wijzigen die niet controleerbaar zijn vanuit de groothandel.
Misschien is hier een handige oplossing voor.
 
Beste Harolda1980,

Je vraag is moeilijk beantwoordbaar.
Wat wil je precies?

wil je een lijst met unieke artikelen zien?
wil je dubbele artikelen uit je database verwijderen?

een lijst met unieke artikelen opvragen is makkelijk gedaan, maar "dubbele" artikelen verwijderne uit een database dat gaat zomaar niet.

Gr,
Mark.

De vraag is hoe artikelen worden aangemaakt
 
Dubbele artikelen verwijderen en de onderliggende gegevens samenvoegen bij het juiste artikel.

In deze database draaien we op de gegevens van een groothandel die dus eigenlijk alles wisselen per keer. dit door de wijzigingen van fabrikanten. Langzamerhand word het minder maar dit is het langste onderdeel.

Een artikel zoekt eerst of hij bestand op basis van merk en artikelnr als die aanwezig is word hij toegevoegd. Zo niet dan begint het zoeken naar de merk fabrikant combinatie daarna de groep. en nu word er een artikel aangemaakt.

Alleen blijft dat dit langzamerhand steeds beter word aangeleverd. maar om het helemaal goed te maken moeten nu de dubbelen eruit gehaald.

Dus als artikel 1 gelijk is aan artikel 100.

En blijkt dat artikel 1 van de 3 punten heeft dan moeten de gegevens naar artikel 1 omgelegd worden(prijs en afname).

Zodat uiteindelijk artikel 100 verwijderd kan worden!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan