MadCro Geschrieben 26. August 2004 Teilen Geschrieben 26. August 2004 Hi, ich bekomm es einfach nicht hin, hab eine tabelle die heisst "tblstorys", dann noch eine "customers" und eine dritte "tblauthorizedstories" in tblstorys stehe halt daten mir eine auto_incremet id als primary key, die tblauthorizedstories beinhaltet die zuordung welcher Kunde (aus tabelle customers) welche Daten aus tblstorys hat eine n:m beziehung. als so was : ID (auto_increment int) - StoryID (int) - KundenID (int) 1 - 22 - 11 2 - 5 - 7 usw. Nun will ich alle daten aus tblstorys die der Kunde mit der ID z.B. 11 nicht hat SELECT * FROM tblstories LEFT JOIN tblauthorizedstories ON AS_Story = ST_ID GROUP BY ST_ID HAVING AS_Customer != 11 ORDER BY ST_ID so gehts schonmal nicht :confused: kann jemand helfen ? Danke Gruß MadCro Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zirri Geschrieben 26. August 2004 Teilen Geschrieben 26. August 2004 SELECT * from tblstories INNER JOIN tblauthorizedstories ON AS_Story = ST_ID INNER JOIN customers ON bedingung(kenn deine feldbez. nicht) WHERE c_id!=11 am rande, warum hast du in deiner n:m-tabelle einen zusaetzlichen PK ??? du hast doch einen zusammengesetzten gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MadCro Geschrieben 26. August 2004 Autor Teilen Geschrieben 26. August 2004 SELECT * from tblstories INNER JOIN tblauthorizedstories ON AS_Story = ST_ID INNER JOIN customers ON bedingung(kenn deine feldbez. nicht) WHERE c_id!=11 am rande, warum hast du in deiner n:m-tabelle einen zusaetzlichen PK ??? du hast doch einen zusammengesetzten gruss danke zirri , aber wieso brauche ich den join auf customers ? ich will doch nur die daten aus tblstory die ein customer nicht hat, das kann ich doch auch über die customer_id im tblauthorizedstories filternt, oder ??!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 26. August 2004 Teilen Geschrieben 26. August 2004 SELECT * from tblstories INNER JOIN tblauthorizedstories ON AS_Story = ST_ID INNER JOIN customers ON bedingung(kenn deine feldbez. nicht) WHERE c_id!=11 Öhm, wenn ich Deine Abfrage richtig interpretiere (und du c_id! als Feld der customers gesehen hast), dann gibt er aber nur die "storys" aus, die auch wenigstens einen Satz in tblauthorizedstories drin haben, oder? *grübel* Ich würd's so machen: SELECT story.ID FROM story where story.ID not in (select storyid from authstory where customer=11) HTH, ICQ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MadCro Geschrieben 27. August 2004 Autor Teilen Geschrieben 27. August 2004 Öhm, wenn ich Deine Abfrage richtig interpretiere (und du c_id! als Feld der customers gesehen hast), dann gibt er aber nur die "storys" aus, die auch wenigstens einen Satz in tblauthorizedstories drin haben, oder? *grübel* Ich würd's so machen: SELECT story.ID FROM story where story.ID not in (select storyid from authstory where customer=11) HTH, ICQ zirri, danke aber das war es nicht so ganz, ICQ, Dir auch danke aber das mySQL was ich benutze kennte keine Sub Selects dann muss ich das ganz über eine tmp Tabelle machen wie es aussieht , so n f**k Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 27. August 2004 Teilen Geschrieben 27. August 2004 ICQ, Dir auch danke aber das mySQL was ich benutze kennte keine Sub Selects *anshirnlang* Klar, daran hab ich gar nicht gedacht! Yep, dann wird Dir nur eine temporäre Tabelle übrigbleiben. Gruss, ICQ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 27. August 2004 Teilen Geschrieben 27. August 2004 Nun will ich alle daten aus tblstorys die der Kunde mit der ID z.B. 11 nicht hat SELECT DISTINCT T1.ID FROM STORIES T1 JOIN AUTHSTORIES T2 ON (T1.ID = T2.ST_ID AND T2.C_ID <> 11) Das sollte dir alle Story-Ids zurückgeben, die Kunde 11 nicht hat, oder denke ich da jetzt falsch? EDIT: Ab Version 4.1.0 kann auch MySQL SubQueries. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MadCro Geschrieben 27. August 2004 Autor Teilen Geschrieben 27. August 2004 also bei mir gibt das nur Fehlermeldungen ON (T1.ID = T2.ST_ID AND T2.C_ID <> 11) hiermit kommt er nicht klar :-/ Edit : Naja hab es mal nun mit einer tmp Tabelle gelöst Danke an alle :e@sy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 27. August 2004 Teilen Geschrieben 27. August 2004 also bei mir gibt das nur Fehlermeldungen ON (T1.ID = T2.ST_ID AND T2.C_ID <> 11) hiermit kommt er nicht klar :-/ Was für Fehlermeldungen? Das ist nichts, was MySQL nicht können sollte... (hast du den Tabellen auch einen Namen gegeben? Also: FROM Stories T1. Das ist nichts anderes als würdest du schreiben: ON (Stories.ID = AuthStories.ST_ID), nur eben durch die Umbenennung in T1 bzw. T2 kürzer) EDIT: Du kannst auch irgendeinen Namen vergeben, ich benutze eben oft T1, T2 usw. In manchen SQLs hab ich aber auch schon sprechendere Namen verwendet (wenn z.B. in SubSelects mehrfach aus derselben Tabelle gelesen wurde, nur mit anderen Bedingungen) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zirri Geschrieben 27. August 2004 Teilen Geschrieben 27. August 2004 Öhm, wenn ich Deine Abfrage richtig interpretiere (und du c_id! als Feld der customers gesehen hast), dann gibt er aber nur die "storys" aus, die auch wenigstens einen Satz in tblauthorizedstories drin haben, oder? *grübel* sollen denn nicht nur stories ausgegeben werden, auf die ein customer x zugriff drauf hat ?!? dafuer ist doch die tabelle tblauthorizedstories da und traegt nicht umsonst diesen namen. gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 27. August 2004 Teilen Geschrieben 27. August 2004 sollen denn nicht nur stories ausgegeben werden, auf die ein customer x zugriff drauf hat ?!? Nein, es sollen nur die Stories ausgegeben werden, auf die ein Customer keinen Zugriff hat. Deine Abfrage sucht aus den Tabellen die zueinander passenden Datensätze raus und filtert den Customer 11 raus. Damit erhälst Du zwar alle Datensätze, die in beiden (oder bei Deiner Abfrage in allen drei) Tabellen verbundene Sätze haben, allerdings erwischt Du damit nicht die Sätze, die nur in tblstories vorkommen und in tblauthstories gar keinem Kunden zugeordnet sind. ICQ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.