Zum Inhalt springen

Sql: Join mit NULL oder ID


Empfohlene Beiträge

Folgende Frage, ich möchte aus mehreren Tabellen die Inhalte zusammen führen, jedoch habe ich eine Spalte mit einer AdminID, die entweder Null oder eine spezielle ID sein kann.

Falls diese Spalte Null ist, sollen die Daten des Admins auch Null sein.

Leider sind in der Ergebnismenge bei einer Null-ID immer alle Kombinationen des jeweiligen Eintrags mit ALLEN Admins vorhanden, was jedoch vermieden werden soll.

Aktuelles SQL Statement:

SELECT * 

FROM ticket AS t, ticketkat AS tk, ticketstat AS ts, product AS p, admin AS adm, reader AS r

WHERE t.TicketKat_idTicketKat = tk.idTicketKat

AND t.TicketStat_idTicketStat = ts.idTicketStat

AND t.Product_idProduct = p.idProduct

AND r.Ticket_idTicket = t.idTicket

AND (

t.Admin_idAdmin IS NULL 

OR t.Admin_idAdmin = adm.idAdmin

)
Ergebnis:
Admin_idAdmin: NULL | idAdmin: 1 | Nickname: Shadowman

Admin_idAdmin: 1    | idAdmin: 1 | Nickname: Shadowman

Admin_idAdmin: 1    | idAdmin: 1 | Nickname: Shadowman

Admin_idAdmin: NULL | idAdmin: 2 | Nickname: Shadowman_Test
gewünschtes Ergebnis:
Admin_idAdmin: NULL | idAdmin: NULL | Nickname: NULL

Admin_idAdmin: 1    | idAdmin: 1    | Nickname: Shadowman

Admin_idAdmin: 1    | idAdmin: 1    | Nickname: Shadowman

Hat da jemand eine Idee, wie dies realisiert werden kann?

Mfg Shadowman

Bearbeitet von Shadowman
Link zu diesem Kommentar
Auf anderen Seiten teilen

Du könntest natürlich da mit IF(id==NULL,nickname=NULL,nickname) einzeln durchpreschen also zu jeder Spalte eine IF-Abfrage.

Aber andere Frage: Was willst du damit wenn da NULL,NULL,NULL drinsteht? Und das ein paar mal. Für mich ist das eine inkonsistente & sinnfreie Abfrage. Weil mit Daten in denen nix drinsteht will ich auch nicht haben. Aber das soll nur ne Frage bzw. Feststellung sein :P

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du möchtest Tabellen zusammenführen, dass heist diese Tabellen müssen ein Verbundfeld haben also die müssen zusammengehören sonst wäre die Zusammenführung ja sinnlos.

Das heist das du da ein schlechtes DB Design hast wenn in einer Spalte die IDs (was eindeutig zugewiesene Werte sein sollten) haben sollte NULL drin stehen kann.

Überdenke dir mal dein DB Design genau, ich denke das zu überarbeiten wäre nicht die schlechteste Idee wenn NULL in einem Id Feld stehen darf.

Gruß lit-web

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sorry, hatte schon länger nicht mehr rein geguckt, weil die Lösung einen Tag später gefunden wurde.

Das ganze wurde mit einem Join gemacht, wodurch die ganze Problematik nicht mehr auftritt. Es soll ja nicht immer ein Wert angefügt werden, sondern nur, wenn dies auch so eingestellt ist. Daher auch die möglichtkeit, dass der Fremdschlüssel NULL sein kann

Ausserdem möchte ich die Tabellen nicht immer verbinden...nur, wenn dies auch möglich ist (daher die NULL Werte)

@Werwolf:

Es geht ganz einfach darum, dass ein Beitrag von einem User einen zugewiesenen Admin hat (die 3 Spalten sind gefüllt), oder halt nicht (die Spalten sind NULL und werden im Script entsprechend verarbeitet)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sorry, hatte schon länger nicht mehr rein geguckt, weil die Lösung einen Tag später gefunden wurde.

Das ganze wurde mit einem Join gemacht, wodurch die ganze Problematik nicht mehr auftritt. Es soll ja nicht immer ein Wert angefügt werden, sondern nur, wenn dies auch so eingestellt ist. Daher auch die möglichtkeit, dass der Fremdschlüssel NULL sein kann

Ausserdem möchte ich die Tabellen nicht immer verbinden...nur, wenn dies auch möglich ist (daher die NULL Werte)

@Werwolf:

Es geht ganz einfach darum, dass ein Beitrag von einem User einen zugewiesenen Admin hat (die 3 Spalten sind gefüllt), oder halt nicht (die Spalten sind NULL und werden im Script entsprechend verarbeitet)

Wie willst du denn NULL|NULL|NULL verarbeiten?

An deiner Stelle würde ich mir das Datenbankdesign nochmal überdenken. Weil einen NULL-Einträge egal, ob es in einem Gästebuch, Ticketsystem oder Logistiksytemen oder was weiß ich, gibt es nicht.

Leute die noch nix geschrieben oder bestellt haben willst du ja gar nicht haben. Sowas lässt man nicht vom Script abfangen weil das einfach unnötige Zeilen sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie willst du denn NULL|NULL|NULL verarbeiten?

An deiner Stelle würde ich mir das Datenbankdesign nochmal überdenken. Weil einen NULL-Einträge egal, ob es in einem Gästebuch, Ticketsystem oder Logistiksytemen oder was weiß ich, gibt es nicht.

Leute die noch nix geschrieben oder bestellt haben willst du ja gar nicht haben. Sowas lässt man nicht vom Script abfangen weil das einfach unnötige Zeilen sind.

Du hast es erfasst, es geht um ein Ticketsystem ;)

Du siehst das NULL allerdings bei einer falschen Position. In der Datenbank ist bei jedem Ticket die möglichkeit gegeben, dass dies von einem (und nur einem) Admin übernommen wird. Somit ist es aber auch möglich, dass es bisher von keinem Admin übernommen wurde (FK admin_id in der Ticket Tabelle = NULL)

Einen NULL Wert kann ich in PHP ganz einfach so verarbeiten, dass dort steht:

Zugeteilter Admin: Noch niemand

Bearbeitet von Shadowman
Link zu diesem Kommentar
Auf anderen Seiten teilen

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...