Jump to content

SQL Datenbank Suche


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

Ich hänge gerade dabei, eine Datenbank zu Sortieren.

 

Aufbau der Tabelle die ich Sortieren will:

 

ID USER ABO ....

 

Nun gibt es jede id mehrfach, z.b

 

ID USER ABO

1   test1   RT

1   test1   AG

1   test1   AG

2   test2   AG

3   test3   RT

3   test3   AG

.....

 

Nun will ich folgenes ausgegeben haben:

 

Jede ID muss ein Abo RT und AG haben, wobei AG mehrfach vorkommen kann.

 

ausgegeben werden sollen ALLE Id´s wo es zwar AG´s gibt aber keine RT wie hier bei ID 2 der fall...

 

Und das ganze soll nur die Datensätze der letzten 7 tage anzeigen

 

 

wie kann man das am besten umsetzen?

 

 

Habe mir gedacht eine 2 Tabelle anzulegen hilft evtl.

 

so das ich:

 

INSERT INTO `TABELLE_NEW` (ID, USER, ABO)
SELECT `ID`, `USER`, `ABO` FROM `TABELLE1`
WHERE (DATA) > 2014-04-14 00:00:00.000

 

 

nur weiß ich nicht weiter :/

bearbeitet von whoami
Link zu diesem Kommentar

Moin,

 

zunächst mal ist deine Tabelle offenkundig nicht normalisiert. Das macht den Umgang damit unnötig kompliziert.

 

Dann: Wenn du nach Datum filtern möchtest, muss es natürlich in jeder Zeile auch ein Datumsfeld geben. Ist das gegeben?

 

Und schließlich musst du mit einer verschachtelten Abfrage arbeiten, auch "Sub-Select" genannt. Mit dem ersten Select identifizierst du alle IDs, für die ein Eintrag "AG" existiert und mit dem zweiten davon dann diejenigen, die kein "RT" haben. Die Klausel "NOT IN" sollte dir dabei helfen (zeige mir nur diejenigen aus Abfrage 1, die in Abfrage 2 nicht auftauchen).

 

Gruß, Nils

Link zu diesem Kommentar

In Deinen Testdaten hat ja nur die ID 2 keinen RT-Eintrag. D.h. die Abfrage liefert genau einen Datensatz mit ID 2 und ABO = NULL...

War das nicht das, was rauskommen sollte? Die IDs, die keinen RT-Eintrag haben?

 

... und wenn dich das ABO=NULL stört, lass es einfach weg ;)

(SELECT A1.ID FROM...)

bearbeitet von Cybquest
Link zu diesem Kommentar

Ja, Testdaten sind ja nur ein paar, gibt hunderte id´s

 

und jede ID MUSS AG und RT haben

AG kann jede ID 5 oder what ever haben

RT (SOLLTE) sie genau 1x haben

 

wenn aber bei einer ID keine RT Existiert sprich AG ist da aber RT fehlt soll diese ID ausgegeben werden.

 

RT gibt es in dem fall nicht also auch kein Leeres Feld es Existiert einfach kein eintrag in der Datenbank

Link zu diesem Kommentar

... und was ist jetzt noch Dein Problem?

 

Die Abfrage spuckt IDs aus, die keine RTs haben aber auf Grund anderer ABO-Einträge (vermutlich dann immer AG) überhaupt existieren...

Es geht doch nur um IDs, die kein RT haben, oder nicht?

Dass ein NULL-Feld dabei raus kommt, wenn Du die ABO-Spalte mit anzeigen lässt, liegt am LEFT JOIN... das heisst ja nicht, dass es dafür einen Datensatz in der Tabelle geben müsste.

 

Entweder versteh ich Dein Problem nicht, oder Du die Lösung nicht...

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

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

×
×
  • Neu erstellen...