Zum Inhalt springen

Hier ist ein MySQL State das nicht funtzt!!! Wieso??


Net-srac

Empfohlene Beiträge

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 ]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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. :D Versprochen.

[ 27. April 2001: Beitrag editiert von: FaFo ]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

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