Datenbankabfrage über 2 Tabellen
Hey Leute,
ich habe ein kleine Problem und hoffe Ihr könnt mir helfen.
Gib es die Möglichkeit eine normale Datenbankabfrage über 2 Tabellen auszuführen? Also: "SELECT * FROM tabelle WHERE name LIKE '$name'"; Normale Abrage halt.,
"SELECT * FROM tabelle1, tabelle2 WHERE name LIKE '$name'";Wär super klappt aber nicht!
Vielleicht habe ich das nicht ganz verstanden, aber:
Bei Inner Join müssen ja imemr die Where Bedingungen in den jeweiligen Tabellen sein Also: "SELECT T1.*, T2.* FROM tabelle1 T1, tabelle2 T2 WHERE T1.name = T2.name"; Ich habe aber eine variable die z.B. mit name übereinstimmen muss!
Bei UNION müssen Die (?Spaltentypen?) <- "bin mir nich sicher" und die Anzahl der abgefragten Spalten übereinstimmen Also: "SELECT name FROM tabelle1 WHERE name LIKE '$name' //Wenn ich jetzt name und id abfrage klappts nicht mehr! UNION SELECT name FROM tabelle2 WHERE name LIKE '$name'"; Ich brauche aber unterschiedliche Spalten und Anzahlen pro Tabelle.
Komm einfach nicht drauf! Hoffe Ihr versteht was ich meine und könnt mir helfen.
Besten Dank im vorraus!
Mif freundlichen Grüßen
Matz 80
ich habe ein kleine Problem und hoffe Ihr könnt mir helfen.
Gib es die Möglichkeit eine normale Datenbankabfrage über 2 Tabellen auszuführen? Also: "SELECT * FROM tabelle WHERE name LIKE '$name'"; Normale Abrage halt.,
"SELECT * FROM tabelle1, tabelle2 WHERE name LIKE '$name'";Wär super klappt aber nicht!
Vielleicht habe ich das nicht ganz verstanden, aber:
Bei Inner Join müssen ja imemr die Where Bedingungen in den jeweiligen Tabellen sein Also: "SELECT T1.*, T2.* FROM tabelle1 T1, tabelle2 T2 WHERE T1.name = T2.name"; Ich habe aber eine variable die z.B. mit name übereinstimmen muss!
Bei UNION müssen Die (?Spaltentypen?) <- "bin mir nich sicher" und die Anzahl der abgefragten Spalten übereinstimmen Also: "SELECT name FROM tabelle1 WHERE name LIKE '$name' //Wenn ich jetzt name und id abfrage klappts nicht mehr! UNION SELECT name FROM tabelle2 WHERE name LIKE '$name'"; Ich brauche aber unterschiedliche Spalten und Anzahlen pro Tabelle.
Komm einfach nicht drauf! Hoffe Ihr versteht was ich meine und könnt mir helfen.
Besten Dank im vorraus!
Mif freundlichen Grüßen
Matz 80
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 173869
Url: https://administrator.de/contentid/173869
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
8 Kommentare
Neuester Kommentar
Du könntest die beiden Tabellen per Union verknüpfen und dann eine Abfrage darum legen:
select X.* from (
select ID, name, Beschreibug, datum from Tabelle1
union
select ID, name, Beschreibug, datum from Tabelle2
) X where X.Name like " .$name. "
Damit solltest du dann aus beiden Tabellen alles bekommen bei dem Name der Variablen entspricht. Hierfür müssen jedoch die Tabellendefinitionen vom Typ her gleich sein, sonst müsstest du noch ein paar Umwandlungen durchführen.
select X.* from (
select ID, name, Beschreibug, datum from Tabelle1
union
select ID, name, Beschreibug, datum from Tabelle2
) X where X.Name like " .$name. "
Damit solltest du dann aus beiden Tabellen alles bekommen bei dem Name der Variablen entspricht. Hierfür müssen jedoch die Tabellendefinitionen vom Typ her gleich sein, sonst müsstest du noch ein paar Umwandlungen durchführen.
Du machst hier was falsch!
Du kannst mit SQL nicht einfach 2 Tabellen zusammenwerfen, die keinen Bezug zueinander haben (SELECT * FROM t1,t2 ist übrigens ein Kreuzprodukt).
Du solltest lieber mehrere Abfragen hintereinander machen!
Ein syntaktisch korrektes UNION wäre übrigens:
Du kannst mit SQL nicht einfach 2 Tabellen zusammenwerfen, die keinen Bezug zueinander haben (SELECT * FROM t1,t2 ist übrigens ein Kreuzprodukt).
Du solltest lieber mehrere Abfragen hintereinander machen!
Ein syntaktisch korrektes UNION wäre übrigens:
(
select
id, fld1
from
tbl1
where
fld1 like 'a%'
)
union
(
select
id, fld1
from
tbl2
WHERE
fld1 like 'a%'
)