Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo an Alle

Ich hätte gern ein Tipp um besser zu selektieren.

Ich habe die folgende Tabelle

 correspondance

Article | Dept
A1 | 123
A1 | 456
A1 | 987
A2 |456
B1 | 123
B1 | 987
C3| 123

 

Ich möchte alle Artikel aus dept 123 ohne die aus dept 456 

select * from correspondance where dept =  '123' and  dept !=  '456';

ich dachte ich würde sowas bekommen
 

Article | Dept

B1 | 123
C3 | 123

stattdessen habe ich folgendes 
 

Article | Dept
A1 | 123
B1 | 123
C3| 123

Den Select habe ich auch probiert ohne Erfolgt

select * from correspondance where dept =  '123'  and article in(
select article from correspondance where dept =  '123' or dept =  '456');

Danke für eure Hilfe

Geschrieben (bearbeitet)

Vielleicht ist das blödsinn, aber probier mal:

SELECT * FROM correspondance
WHERE 	dept = '123' 
	AND 
        NOT article IN(SELECT article FROM correspondance WHERE dept = '456')
 
Bearbeitet von Tobi_8
Geschrieben (bearbeitet)
vor 4 Stunden schrieb Tedi:

Article | Dept
A1 | 123
B1 | 123
C3| 123

mal absehen davon, dass dieses Ergebnis vollkommen richtig ist, da deine Testdaten nun einmal drei Artikel mit dept 123 enthalten, wird für die Abfrage weder ein Subselect ala

AND 
        NOT article IN(SELECT article FROM correspondance WHERE dept = '456')

noch irgendeine andere Einschränkung als

 where dept =  '123' 

benötigt, da dies bereits alle anderen dept-werte ausschliesst. Hier vielleicht noch auf den Tabellenaufbau (Spaltentyp) und die Syntax des DBMS achten, ob man bei numerischen Werten überhaupt Anführungszeichen benötigt.

Abhängig davon kann man dann auch einen Subselect verwenden, um gezielt die Artikeln mit verschiedenen dept-Werten zu selektieren:

SELECT * FROM correspondance
WHERE dept IN ('123', '987', '432')
Bearbeitet von el_pollo_diablo
Geschrieben
vor 11 Stunden schrieb el_pollo_diablo:

mal absehen davon, dass dieses Ergebnis vollkommen richtig ist, da deine Testdaten nun einmal drei Artikel mit dept 123 enthalten

Eh... nur so lange man den zweiten Aspekt der Anforderung ignoriert: "Artikel die nicht in Dept 456 sind". Article A1 ist sowohl Dept 123 als auch Dept 456 zugeordnet - soll deshalb also nicht zur Ergebnismenge gehören.

 

Man kann das auch anders implementieren (Geschmackssache), aber die Lösung von Tobi trifft schon den Kern des Problems.

Geschrieben
vor 13 Stunden schrieb PVoss:

Eh... nur so lange man den zweiten Aspekt der Anforderung ignoriert: "Artikel die nicht in Dept 456 sind". Article A1 ist sowohl Dept 123 als auch Dept 456 zugeordnet - soll deshalb also nicht zur Ergebnismenge gehören.

Der Artikel A1 aus Dept 456 ist doch auch nicht im Ergebnis enthalten?

Geschrieben

Bei der Tabelle handelt es sich um eine Zuordnungstabelle. A1 kommt zwei mal vor, steht aber für nur eine Entität, welche zu zwei Depts zugeordnet ist. Eine der beiden Zuordnungen verstößt gegen die Filterkriterien, deshalb darf die Entität A1 nicht im Ergebnis sein.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...