Abfrage 2er Tabellen

  • Themenstarter Themenstarter joky_joky
  • Beginndatum Beginndatum
J

joky_joky

Hallo ich habe eine Tabelle die sich PN_user nennt und eine die sich PN_mitglieder nennt.

nun wollte ich eine Abfrage starten mit der ich
in Tabelle 1 und 2 alle Datensätze heraussuche bei denen die $ID_empfänger mit der
der angemeldeten Benutzers übereinstimmt z.B. 4321 oder so.

mit einer Tabelle mache ich das immer so.

PHP:
<?php
   $db = mysql_connect($host, $user, $pass);

   $res = mysql_query("$database",
          "SELECT * FROM $tabel WHERE $ID_empfänger = '{$_SESSION[user_id]}'");
   $num = mysql_num_rows($res);
   echo "$num neue Nachrichten<br>";

   for ($i=0; $i<$num; $i++)
   {
      $idab = mysql_result($result, $i, "IDabsender");
      $idempf = mysql_result($result, $i, "IDempfaenger");
      $postab = mysql_result($result, $i, "postausgangabsender");
      $postempf = mysql_result($result, $i, "posteingangempfaenger");
      $betreff = mysql_result($result, $i, "Betreff");
	  $nachricht = mysql_result($result, $i, "Nachricht");
      echo "$idab, $idempf, $postab, $postempf, $betreff, $nachricht <br>";
   }

   mysql_close($db);
?>

Aber ich habe ja 2 Tabelen eine wo die User die Mitglieder sind sich untereinander
Nachrichten schreiben können und dann noch eine wo User die nicht Mitgleider sind einem Mitglied
schreiben können. Kurz und Knapp gesagt biste Mitglied speichert er die Nachricht in Tabelle 1
wenn du keines Bist speicher er die Nachricht in Tabelle 2. Aber die Nachrichten sollen ja vom Empfänger
in einem Abgerufen werden also müste ich 2 Tabellen gleichzeitig abfragen.

Kann mir jemand weiterhelfen und sagen wie des geht?
 
damit komme ich leider nicht richtig weiter wie benutze ich diesen UNION Befehl
 
Code:
select feldname1, feldname2 from tabelle where bedingung = 1
UNION
select feldname1, feldname2 from tabelle2 where bedingung = 1

Die Reihenfolge und der Typ der Felder im select-Abschnitt muss meiner Meinung nach in beiden Statements identisch sein. MySQL unterstützt erst seit der Version 4.0.0 unions.

snuu
 
Ok THX jetzt geht es Danke Leute

PHP:
<?php 
   $db = mysql_connect($host, $user, $pass); 

   $res = mysql_query("$database", 
          "SELECT * FROM $tabel_01 WHERE IDempfänger = '{$_SESSION[user_id]}' UNION SELECT * FROM $tabel_02 WHERE IDempfänger = '{$_SESSION[user_id]}'"); 
   $num = mysql_num_rows($res); 
   echo "$num neue Nachrichten<br>"; 

   for ($i=0; $i<$num; $i++) 
   { 
      $idab = mysql_result($result, $i, "IDabsender"); 
      $idempf = mysql_result($result, $i, "IDempfaenger"); 
      $postab = mysql_result($result, $i, "postausgangabsender"); 
      $postempf = mysql_result($result, $i, "posteingangempfaenger"); 
      $betreff = mysql_result($result, $i, "Betreff"); 
      $nachricht = mysql_result($result, $i, "Nachricht"); 
      echo "$idab, $idempf, $postab, $postempf, $betreff, $nachricht <br>"; 
   } 

   mysql_close($db); 
?>

Habe es jetzt so gemacht :-)
 
Zuletzt bearbeitet von einem Moderator:
Hi, ich weiß einfach nicht, was an diesem UNION Befehl nicht stimmt.
Vielleicht kann mir einer von euch helfen. Es geht darum, aus 2 Tabellen die Inhalte auszulesen.
PHP:
include("dbconnect.php"); 
  $abfrage = "SELECT ID, KATEGORIE FROM updown_kategorie WHERE id = $loesch UNION SELECT NAME, DATEINAME, SIZE, PASSWORT FROM updown_datei WHERE KAT = $kate"; 
  $ergebnis = mysql_query($abfrage);
  while($row = mysql_fetch_object($ergebnis)) 
    {

würde mich sehr freuen,

WACSF
 
Die SQL-Statements, die per UNION verknüpft werden, müssen die Spalten in der selben Reihenfolge und vom selben Typ zurück geben.
Code:
select Zahlenfeld, Textfeld, Datumsfeld from Tabelle
UNION
select AnderesZahlenfeld, Textfeld, Datumsfeld from tabelle
 
Und das macht nichts, wenn in den 2 Tabellen verschieden viele Spalten sind und wenn z.B. ID gleich ist?!

DAnke erstmal,

WACSF
 
Zurück