Abfrage von 3 Tabellen.

J

joky_joky

Hallo ich habe mir jetzt fast alle Themen rund um die Abfrage von mehreren Tabellen
angesehen und ich werde einfach nicht schlüssig daraus.

Also ich müste aus 3 Tabellen eine Abfrage starten und sollten alle Ergebnisse
ausgespuckt werden die darauf zutreffen.

hier mal mein Code der leider nichts macht auser mir alle aus Tabelle herauszugeben und
diese dann so oft zu duplizieren wie die Abfrage treffer findet in der 2 Tabelle.

PHP:
<?php
include ("config.php");

$db = mysql_connect("$host", "$user", "$pass");

$sqlab = "SELECT * FROM $table1, $table2 WHERE";
$sqlab .= " $table1.Geb >= '18' AND $table1.Geb <= '99' AND";
$sqlab .= " $table1.Land = 'Deutschland' AND ";
$sqlab .= " $table1.PLZ LIKE '9%' AND $table1.Geschlecht = 'männlich' AND";
$sqlab .= " $table2.Status = 'Singel'";
	 
$res = mysql_db_query("$database", "$sqlab");
$num = mysql_num_rows($res);

for ($i=0; $i<$num; $i++)
  	 {
	 $dbid = mysql_result($res, $i, "Id");
	 $dbnickname = mysql_result($res, $i, "Nickname");

	 echo "$dbid, $dbnickname<BR>";
	 }
mysql_close($db);
?>

So nun müste er mir eigentlich nur 4 Ergebnisse zeigen da in Tabelle 1 fast alle auf die
Suchanfrage passen aber in Tabelle 2 passen nur 4 weil ja nur 4 Singel sind
aber er zeigt mir 4 mal alle die an
die in Tabelle 1 auf die suchanfrage passen. Wieso des ?
Hoffentlich habt Ihr mich jetzt verstanden was ich will :(

MfG Joky_Joky
 
Es wäre hilfreich, wenn du noch den Tabellenaufbau posten könntest, ansonsten wird es schwierig das ganze nachzuvollziehen.
 
joky_joky hat gesagt.:
So nun müste er mir eigentlich nur 4 Ergebnisse zeigen da in Tabelle 1 fast alle auf die
Suchanfrage passen aber in Tabelle 2 passen nur 4 weil ja nur 4 Singel sind
aber er zeigt mir 4 mal alle die an
die in Tabelle 1 auf die suchanfrage passen. Wieso des ?
Weil die "Verknüpfung" der Tabellen fehlt, etwa in der Art:

PHP:
$sqlab .= " AND $table1.user_id = $table2.user_id";
 
Für was brauchst du jetzt die Tabellenstruktur.
Verstehe ich nicht ganz aber gut

Tabelle1

Id
Nickname
Pwd
Vorname
Nachname
Alter
Wohnort
PLZ
Land
Geschlecht

Tabelle2

Id <= die selbe wie in Tabelle1
Größe
Gewicht
Hobbys
Status
 
Ok jetzt hab ich mir des hier
MySQL Join
durchgelesen
aber ich schnall es immer noch nicht ich
wollte doch nur eine ganz normale Suche.
In der ein User seine Suchkriterien eingibt
und dann in zwei Tabellen gesucht wird.

Oder geht das überhaupt nicht?
 
Ich versteh jetzt nicht ganz, warum du extra eine 2te Tabelle anlegst, für Informationen, die eigentliche eine 1:1 Beziehung darstellen (d.h. die Informationen gehoeren nur zu einer ID). Das was du in eine extra Tabelle packen könntest, wäre PLZ und Wohnort (da mehrere User in einem Wohnort wohnen können).

Das ganze nenn sich Normalisierung, nachzulesen unter http://www.payer.de/dbaufbau/dbauf04.html#4.8.

Achja, ich würde nicht das Alter an sich in der Datenbank speichern, sondern das Geburtsdatum, kann aber auch sein, dass du die Spalte einfach falsch benannt hast ;)

Aber um deine Frage mal zu beantworten:
Code:
SELECT
    *
FROM
    Tabelle1
LEFT JOIN Tabelle2 USING(id)

WHERE Bedingung musst du hal noch manuell dazu packen.

mfg

Devil
 
Ok cool Danke das mit den Tabellen in der Datenbank hat schon seinen Sinn denn
die Felder die ich aufgezählt habe sind nur ein Bruchteil von dem was wirklich drin steht
und da ich keine Tabelle haben wollte die über 250 Felder beinhaltet wegen der Übersichtlichkeint habe ich sie in kleine Tabellen aufgeteilt.
und das mit dem Alter stimmt so auch nicht es ist das Geburtsdatum und daraus errechne ich das Alter.

Also sorry wollte mich nur korigieren *g*

Aber nochmals THX

MfG Joky_Joky
 
Zuletzt bearbeitet von einem Moderator:
Zurück