Net-srac Geschrieben 26. April 2001 Teilen Geschrieben 26. April 2001 Hi Freaks, warum kann mein MySQL so ein Statement nicht verstehen? SELECT c_bearbeiter.name, c_bearbeiter.email FROM c_bearbeiter , c_gehoert , c_bearbeitet WHERE c_bearbeiter.id = (SELECT c_bearbeitet.mid FROM c_bearbeitet WHERE c_bearbeitet.mid = 1 ; );"; Zur erklärung: es sind 2 Tabellen, Bearbeiter und Bearbeitet. der Bearbeiter hat eine ID, die in beiden Tabellen gleich ist, warum sagt mir mein MySQL das es quatsch ist was ich schreibe? Thnx4Help FaFo [ 26. April 2001: Beitrag editiert von: FaFo ] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hades Geschrieben 26. April 2001 Teilen Geschrieben 26. April 2001 hallo fafo, du willst die tabellen c_bearbeiter, c_bearbeitet und c_gehoert abfragen... existiert die tabelle c_gehoert? grüße hades Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Net-srac Geschrieben 26. April 2001 Autor Teilen Geschrieben 26. April 2001 ja, das wichtigste ist eigentlich, ob man bei PHP und MySQL 2 Select statements verknüpfen kann ich poste sie dir nochmal. Das hier liefert ja 1 zurück stimmts? SELECT c_bearbeitet.mid FROM c_bearbeitet WHERE c_bearbeitet.mid = 1;"; ******************************************** Hier soll es aus der einen Tabelle den namen raussuchen wo die ID auch 1 ist. SELECT c_bearbeiter.name, c_bearbeiter.email FROM c_bearbeiter WHERE c_bearbeiter.id = *** hier soll das von oben hin *** Im einzelnen Tun sie beide was sie sollen wenn ich bei den Wheres .. = 1 hinschreibe nur zusammen halt nicht. greetz Carsten. [ 26. April 2001: Beitrag editiert von: FaFo ] [ 27. April 2001: Beitrag editiert von: FaFo ] [ 27. April 2001: Beitrag editiert von: FaFo ] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hades Geschrieben 26. April 2001 Teilen Geschrieben 26. April 2001 du kannst verschachtelte select anweisung erstellen, aber nur eine where clausel im sql statement haben... mit diesem sql statement bekommst du alle sätze raus, die in beiden tabellen gleich sind: select c_bearbeiter.name, c_bearbeiter.email, c_bearbeitet.mid from c_bearbeiter, c_bearbeitet where c_bearbeiter.id = c_bearbeitet.mid; Nachtrag: unterstützt mysql union selects? wenn ja, dann kannst du zwei seperate select anweisungen (mit jeweils einer where clausel) mittels union verbinden. grüße hades [ 26. April 2001: Beitrag editiert von: Hades ] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Net-srac Geschrieben 27. April 2001 Autor Teilen Geschrieben 27. April 2001 und wie kann ich damit den Wert meines einen Statements als auswahlkriterium für mein anderes State nehmen :confused: Thnx4Help FaFo Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eva Geschrieben 27. April 2001 Teilen Geschrieben 27. April 2001 Original erstellt von FaFo: <STRONG>SELECT c_bearbeiter.name, c_bearbeiter.email FROM c_bearbeiter , c_gehoert , c_bearbeitet WHERE c_bearbeiter.id = (SELECT c_bearbeitet.mid FROM c_bearbeitet WHERE c_bearbeitet.mid = 1 ; );"; </STRONG> Gibt der subselect nur eine Zeile zurück? In SQL von Oracel muss man wenn mehrere Zeilen zurückgegeben werden "in" schreiben ... Ist das oben der ganze select oder nur ein Teilselect? Denn im ersten Select hast du zwei weitere Tabellen wo du eigentlicht nicht verwendest (c_gehoert , c_bearbeitet) Auch das Semikolon im Subquery würde bei Oracle nicht funktionieren ... Was für eine Fehlermeldung bekommst du denn? Viele Grüße Eva Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Net-srac Geschrieben 27. April 2001 Autor Teilen Geschrieben 27. April 2001 Also ich hab die mein 2.posting nochmal editiert. Ich hab hier ein bißchen größeres Problem. Wenn ich das hier schildern würde müßte ich zu weit ausholen. Daher wollt ich die einfachste Art einer verschachtelten SQL anweisung hinschreiben. Ich hab es ja nun hin und her probiert. Beide Statements einzeil funktionieren, wenn ich in die where klausel einen festen Wert (= 1) setze. Nur halt im verschachtelten klappts net. Nun hat ja Hades schon gesagt, dass man zwar verschachteln, aber nur eine Where klausel haben kann. Aber wie erreiche ich dann, dass mein erstes Statement vom Rückgabewert der 2. Tabelle abhängig wird? Ich selbst war auch nur bei nem Oracle Seminar und weiß daher nicht so recht mit MySql umzuspringen. Viele Grüße Carsten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eva Geschrieben 27. April 2001 Teilen Geschrieben 27. April 2001 Kommt keine Fehlermeldung? Eine where Klausel würde so aussehen: select c_bearbeiter.name, c_bearbeiter.email, c_bearbeitet.mid from c_bearbeiter, c_bearbeitet where c_bearbeiter.id = c_bearbeitet.mid and c_bearbeitet.mid = 1 and c_bearbeitet.weitere_Bedingung = XXX; ---- Aber das Verschachteln müsste auch klappen ... hast du es mal mit "in" probiert es könnte ja sein das die Bedingung mehrere Zeilen zurückgibt wenn der Bearbeiter mehrere Sachen Bearbeitet hat, dann würde and c_bearbeiter.mid = (1,1,1) dortstehen! Viele Grüße Eva Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Net-srac Geschrieben 27. April 2001 Autor Teilen Geschrieben 27. April 2001 Ja, stimmt das funktioniert ! Aber bei mir noch nicht. Am besten beschreib ich das ganze doch nochmal. Also ich habe 3 Tabellen. Eine mit den Daten über einen Bearbeiter (ID,NAME,EMAIL) --- Objekt --- Eine mit den Verfahren die bearbeitet werden (VID,Bezeichnung) --- Objekt --- Eine in der Steht wer (ID) welches Verfahren (VID) bearbeitet. ---Beziehung--- Also 1|2, 2|5, 3|1 ... Ich will nun über die VID (ID des Verfahrens)die Daten des Bearbeiters ausgeben lassen. Das ist mein Problem, und wenn es einer lößt nenn ich ihn Meister. Versprochen. [ 27. April 2001: Beitrag editiert von: FaFo ] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eva Geschrieben 27. April 2001 Teilen Geschrieben 27. April 2001 select c_bearbeiter.name, c_bearbeiter.email, c_bearbeitet.vid from c_bearbeiter, c_bearbeitet where c_bearbeiter.id = c_bearbeitet.mid and c_bearbeitet.vid = hier gehört die Variable für die vid hin ---- Wenn du die Bezeichnung für die VID noch brachst musst du auch diese Tabelle auch noch dazujoinen. Ansonsten brauchst du diese Tabelle gar nicht! Servus Eva [ 27. April 2001: Beitrag editiert von: Eva ] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hades Geschrieben 27. April 2001 Teilen Geschrieben 27. April 2001 das verschachtelte sql statement müßte dann so aussehen: select c_bearbeiter.name, c_bearbeiter.email, c_bearbeitet.vid from c_bearbeiter, c_bearbeitet where c_bearbeiter.id in (select c_bearbeitet.mid from c_bearbeitet) and c_bearbeitet.vid = hier gehört die Variable für die vid hin evas sql statement wird aber schneller abgearbeitet, da dort nur einmal ein select ausgeführt wird. grüße hades [ 27. April 2001: Beitrag editiert von: Hades ] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Eva Geschrieben 27. April 2001 Teilen Geschrieben 27. April 2001 @Hades du hast dich in der Klammerung verschrieben Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hades Geschrieben 27. April 2001 Teilen Geschrieben 27. April 2001 Original erstellt von Eva: <STRONG>@Hades du hast dich in der Klammerung verschrieben </STRONG> wollte nur mal sehen ob es jemand merkt grüße hades Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Net-srac Geschrieben 27. April 2001 Autor Teilen Geschrieben 27. April 2001 Also danke nochmal für eure Hilfe, aber ich habs mir jetzt eifacher gemacht. Ich hab einfach das Ergebniss des ersten Select statements in eine Variable gespeichert und dann in er anderen direkt auf diese zugegriffen. Geht zwar bestimmt schöner zu machen, aber hauptsache es funtzt. 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.