Shadowman Geschrieben 4. Oktober 2010 Geschrieben 4. Oktober 2010 (bearbeitet) 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 4. Oktober 2010 von Shadowman Zitieren
Werwofl Geschrieben 5. Oktober 2010 Geschrieben 5. Oktober 2010 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 Zitieren
lit-web Geschrieben 5. Oktober 2010 Geschrieben 5. Oktober 2010 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 Zitieren
Shadowman Geschrieben 12. Oktober 2010 Autor Geschrieben 12. Oktober 2010 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) Zitieren
Werwofl Geschrieben 12. Oktober 2010 Geschrieben 12. Oktober 2010 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. Zitieren
Shadowman Geschrieben 12. Oktober 2010 Autor Geschrieben 12. Oktober 2010 (bearbeitet) 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 12. Oktober 2010 von Shadowman Zitieren
Empfohlene Beiträge
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.