[Gelöst] zusatz: Abfrage zu mehreren Tabellen nur zu dumm oder doch zu schwer

atsWien

fühlt sich hier wohl
Hallo an Alle!
In vielen Foren (auch hier) wurde diese Frage schon lang und breit diskutiert,
aber ein lösung hab ich trotzdem noch nicht gefunden.

folgendes Problem:

ich habe 3 Tabellen in einer DB

DB = Telbu

tab1 = adr
tab2 = rufnummern
tab3 = Kostta

jetzt habe ich mit hilfe von EISer hier aus dem Forum schon sehr viel geschaft aber über mehrere geht es einfach nicht.

zuerst mal das was geht:
PHP:
$ergeb = "SELECT * FROM rufnummern AS r INNER JOIN adr AS a ON r.IDadr = a.ID 
WHERE
(a.fname like '$e_famname' AND a.vorname like '%' and '$e_Vorname' = '%')
OR
(a.fname like '%' AND '$e_famname' = '%' AND a.vorname like '$e_Vorname')
OR
(a.fname like '$e_famname' AND a.vorname like '$e_Vorname')

ORDER BY a.vorname ";

nun mein wunsch wäre folgender:
PHP:
$ergeb = "SELECT * FROM rufnummern AS r, kostta INNER JOIN adr AS a ON a.ID = (r.IDadr && kostta.IDadr)
WHERE
(a.fname like '$e_famname' AND a.vorname like '%' and '$e_Vorname' = '%')
OR
(a.fname like '%' AND '$e_famname' = '%' AND a.vorname like '$e_Vorname')
OR
(a.fname like '$e_famname' AND a.vorname like '$e_Vorname')

ORDER BY a.vorname ";

wenn ich es nur so mache:
PHP:
$ergeb = "SELECT * FROM rufnummern AS r, kostta INNER JOIN adr AS a ON a.ID = IDadr
WHERE
(a.fname like '$e_famname' AND a.vorname like '%' and '$e_Vorname' = '%')
OR
(a.fname like '%' AND '$e_famname' = '%' AND a.vorname like '$e_Vorname')
OR
(a.fname like '$e_famname' AND a.vorname like '$e_Vorname')

ORDER BY a.vorname ";

dann funkt es,

mit der kleinen ausnahme das er das ergebins anzeigt und zwar immer das gleiche mit der anzahl der gefundenen ID's

HM weis nicht ob ich mich verständlich ausgedrückt habe ??

villeicht hat jemand einen fehler gefunden oder eine idee was ich hier machen kann.

lg Christian

ps. : muss leider auser haus darum bin ich erst morgen wieder hier ;)
 
Beschreibe doch bitte mal in Worten was in den Tabellen drin ist und was das Ergebnis sein soll. Ich sehe zwar was deine Wunschabfrage machen soll, ich sehe aber nicht ob du dort auch das ausgedrückt hast, was dein vorgestelltes Ergebnis widerspiegelt..

Grüsse!
 
Oh Sorry, ;)

tab1 = adr

stehen die Namen die ich abfrage

$sql_insert = "INSERT INTO `adr`(`ID`, `fname`, `vorname`,`name`, `akgrad`, ..... `kontmail`)
VALUES('','$f_fname','$f_vorname','$f_name','$f_akgrad',...... '$f_kontmail')";


tab2 = rufnummern

stehen einige rufnummern die zu diesen namen gehören

$sql_insert = "INSERT INTO `rufnummern`(`ID`,`IDadr`, `art`, `lv`, `vw`, `nummer`, `gnummer`,........)
VALUES ('',$adr_id,'','$f_lv','$f_vw','$f_nummer', '$f_gnummer',...........)";


tab3 = Kostta

und hier die E-Mail udg.

$sql_insert = "INSERT INTO `kostta`(`ID`, `IDadr`........, `email`, `web`)
VALUES ('',$adr_id,'$email','$web')";

Wobei die Rufnummern immer schön ausgegeben werden, beim ersten beispiel
Nur sobald ich eine abfrage über 2 machen will geht es nicht.

zur info : " '$e_famname' " das sind Variablen
z.B.:
if (isset($_POST['f_famname']))
$e_famname = mysql_real_escape_string($_POST['f_famname']);
else
$e_famname = "%";

lg Christian , und schon mal Danke ;)
 
Ok soweit verständlich - mir fehlt aber noch dein Wunsch, wie denn das ausgegebene Ergebnis aussehen soll.
Wobei ich bei schnellem Überblicken nicht sicher bin, ob deine Schlüssel überhaupt stimmen - ich vermute mal, alle ID sind Inkrementell und unique, und die Setzung der Haupttabellen ID als Schlüssel in die anderen Tabellen funktioniert problemlos?
Ich leg dir aber als Hilfe zur Selsbthilfe mal folgenden Thread ans Herz:
MySQL - Mehrere Tabellen zusammen auslesen, nach verschiedenen Spalten sortieren @ Relationale Datenbanksysteme - tutorials.de: Tutorial, Forum, Anleitung & Hilfe

Denn dort solltest du eigentlich die direkte Lösung erhalten, Beitrag Nummer 3.
 
Ich empfehle Dir weiterhin, dich mit dem JOIN Statement zu beschäftigen. Google: "mysql join tutorial".
Hatten wir vor ~ einem Monat schon mal...
 
DANKE Threepwood,

hat leider nicht so richtigt gefunkt, werde aber weiter experimenieren.

lg Christian
 
Hallo EISer,

Was glaubst Du was ich in letzter Zeit gemacht habe ;) 1 000 möglichkeiten gelesen und getestet hab dabei auch viel gelernt und verstanden.
Aber leider mein Problem nicht in den griff bekommen.

lg Christian
 
Hallo an Alle,

DANKE für Eure Hilfe, aber ich habs endlich gelöst ;)

Für alle dies interesiert:
PHP:
$ergeb = "SELECT * FROM rufnummern AS r INNER JOIN (adr AS a INNER JOIN kostta AS k ON a.ID = k.IDadr) ON a.ID = r.IDadr
WHERE
(a.fname like '$e_famname' AND a.vorname like '%' and '$e_Vorname' = '%')
OR
(a.fname like '%' AND '$e_famname' = '%' AND a.vorname like '$e_Vorname')
OR
(a.fname like '$e_famname' AND a.vorname like '$e_Vorname')

ORDER BY a.vorname ";

lg Christian
 
Oben