ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
506
506
EMPFEHLEN
-
Hallo zusammen,
ich habe 2 Tabellen, die ich in der Art verknüpfen muss, dass in der einen Tabelle der Name der Spalte steht die in der 2. Tabelle abgerufen werden soll:
Code :1
select a.id, a.name from a where (a.(select spaltenname from b where x = y) = "XYZ").
So wie angenommen geht`s leider nicht.
Grüße und Danke
querytailGeändert von querytail (30.11.11 um 12:23 Uhr)
-
MS Access? Oracle?
Zusatzfrage: Ist die Spalte eine beliebige oder eine aus einer Begrenzten Menge?
Nachtrag:
So könnte man es mit MySQL oder Oracle umsetzen wenn es nur um eine begrenzte Anzahl Spalten geht.
Zuerst ein UNION, die alle Spalten untereinander setzt und als neues Fels den Spaltennamen beinhaltet. Anschliessend dieses mit der Spaltenauswahl verknüpfen
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
SELECT data_a.id, data_a.name FROM ( SELECT id, name, spalte1 AS wert, 'spalte1' AS spaltenname FROM a UNION SELECT id, name, spalte2 AS wert, 'spalte2' AS spaltenname FROM a UNION SELECT id, name, spalte3 AS wert, 'spalte3' AS spaltenname FROM a ) AS data_a INNER JOIN ( SELECT spaltenname FROM b WHERE x = y ) AS data_b ON data_b.spaltenname = data_a.spaltenname WHERE data_a.wert = 'XYZ';
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hallo,
es geht um MySQL. Ich habe maximal 5 Spalten zur Auswahl.
Grüße & Danke
querytail
-
Verstehe ich das dann richtig, dass in der ersten Klammer jeweils nur ein Wert genommen wird und das beliebig erweitert werden kann? Danke nochmal ******
Viele Grüße
querytail
-
Jepp. Die erste Kalmemr kann mit UNION erweitert werden, so dass alle 5 Spalten ausgelesen werden.
In der ersten Klammer wird aus
Code :1 2 3 4
ID | S1 | S2 | S3 | S4 | S5 ---|----|----|----|----|--- 1 | 12 | | | 15 | 2 | | A | B | C | D
das folgende
Code :1 2 3 4 5 6 7 8 9 10 11 12
ID | WERT | SPALTENNAMEN ---|------|------------- 1 | 12 | S1 1 | | S2 1 | | S3 1 | 15 | S4 1 | | S5 2 | | S1 2 | A | S2 2 | B | S3 2 | C | S4 2 | D | S5
Darauf kann man nachher mit spaltenname und wert ausfiltern---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Danke für die Erklärung. Das hat mir wieder sehr viel Zeit erspart.
-
Hi Ho,
mal eine Frage... Wenn ich es richtig verstehe hast du 2 Tabellen die miteinander in Beziehung stehen. Wobei die eine vermutlich eine ID als PK und die andere als FK verwendet, ist das soweit richtig verstanden?
Hast Du es dann mal mit einem Join versucht? dürfte von der Ausführugn schneller sein als ein Select im Select.
mfg
Takidoso
-
Er hat in einer Tabelle eine Spalte in der der Name der Spalte der anderen Tabelle steht in der gesucht werden muss. So habe ich das verstanden. Nix mit PK FK etc.
Also etwa so
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
Tabelle a: ID | S1 | S2 | S3 | S4 | S5 ---|----|----|----|----|--- 1 | 12 | | | 15 | 2 | | A | B | C | D Tabelle b: ID | spaltename | X ------------------- 1 | S1 | 1A 2 | S2 | 1A 3 | S1 | 1B 4 | S4 | 1C
Und nun will er zum Beispiel alle Eintràge der Tabelle a, welche in der Spalte X der Tabelle b den Wert Wert '1A' haben und in der Tabelle a in der entsprechenden Spalte ein 'A'.
Also, alle Zeilen mit X = '1A' as Tabelle b: Zeilen 1 und 2.
Also die apaltennamen S1 und S2.
Nun müssen wir in Tabelle a alle Enträge suchen die in Spalte S1 oder S2 den Wert 'A' haben
Gibt in meinem Beispiel natürlich die Zeile mit der ID 2 aus der Tabelle a zurück
Mit JOIN geht das nicht....---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hallo ******
Ich möchte sowas auch nutzen, habe aber Probleme, das bei mir umzusetzen. Ich krieg andauernd eine Fehlermeldung in phpmyadin.
Kann mir jeand erklären, woCode :1 2
data_a.id, data_a.name
abgerufen wird? Ist alles zwischen dem ersten "FROM" und dem letzten "WHERE" nur zur Bestimmung der Spalte? Wenn ich noch mehr Daten (*) benötige, wie kann die Abfrage erweitern? Was bedeutet folgendes?:Code :1 2
spalte1 AS wert, 'spalte1' AS spaltenname
Warum steht das einmal ohne und einmal it Hochkommatas ?
Danke an alle, Gruß tvtotal
-
Item: In Hochkomma ist ein fixer String, ohne Hochkomma der Inhalt der Spalte
Lass einfach mal das kleine Query laufen (natürlich auf deine Namensgebungen etc. angepasst) und du wirst den Unterschied sehen
Code sql:1 2 3 4 5 6
SELECT id, name, spalte3 AS wert, 'spalte3' AS spaltenname FROM a
Item: Die weiteten gewünschten Spaltennamen müssen in JEDEM Teil des UNION-SubQuery hinzugefügt werden. Erst dann sind sie über data_a.feldname abrufbar---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Ich habe das nun geschafft. Was mache ich aber, wenn ich z.B. Spalte 3 nochmal abfragen möchte?
-
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
Datensatzposition aus Abfrage bestimmen?
Von unrealzero_php im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 30.06.09, 15:16 -
Passworteingabe über Expression bestimmen
Von Kai-Behncke im Forum PHPAntworten: 8Letzter Beitrag: 28.01.09, 13:53 -
select abfrage mit like bezogen auf tabellenspalte [mySQL]
Von hegelX im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 23.11.05, 13:32 -
Columns in JTable über CMP EJB füllen/bestimmen
Von Tischtennisspieler im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 3Letzter Beitrag: 10.02.05, 11:03 -
Tabellenspalte optimale Breite bestimmen
Von puetz im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 13.01.05, 16:01





Zitieren


Login





