zwei tabellen abfragen in abhängigkeit von der einen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • zwei tabellen abfragen in abhängigkeit von der einen

    hallo,
    ich habe ein problem, bei dem ich einfach nicht mehr weiterkomme

    also ich habe eine tabelle: test1_3 und eine tabelle: test2

    nun möchte ich aus der tabelle test1_3 alle datensätze ausgeben die mit der variable spaltetest übereinstimmen.

    also somit ja:
    .
    .
    $testspalte = 3;
    $query = "SELECT * FROM test1_$testspalte WHERE testspalte = 'spaltetest'";
    $result = mysql("$DBName",$query,$verbindung);
    $num = mysql_numrows($result);
    for($i=0;$i < $num; $i++)
    {
    $nid = mysql_result($result,$i,"nid");
    $info = mysql_result($result,$i,"info");
    $datum = mysql_result($result,$i,"datum");

    echo "$info - $datum";
    }

    soweit ist ja noch alles klar. nun möchte ich aus der tabelle: test2 die datensätze holen, deren spalte nid mit dem $nid-wert aus der tabelle test1_3 übereinstimmt und aus ihr wird die spalte: text ausgelesen

    aber wie mach ich das alles zusammen.
    also als ergebnis möchte ich dann $info - $datum: $text erhalten.

    ich hatte versucht in die for-schleife der test1_3 abfrage die abfrage der test2 reinzulegen so dass ich ja dann auch
    $query = "SELECT * FROM test2 WHERE nid = '$nid'";
    abfragen kann und immer den richtien $nid wert habe. leider funktioniert das ja bei mehr als einem datensatz nicht mehr.

    desweiteren hatte ich probiert einfach alles in einen array zu speichern also
    $nid[] = mysql_result($result,$i,"nid");
    usw. usw.
    nur habe ich dann das problem: wie geb ich dann $text[], $datum[], $text[] gleichzeitig aus.

    kann man so etwas auch auf 4 arrays anwenden?
    for ($i=0; $i<count($skill); $i++)

    wäre wirklich super nett wenn mir jemand weiterhelfen könnte vielen dank schon einmal.


  • #2
    Hi!
    ich hatte versucht in die for-schleife der test1_3 abfrage die abfrage der test2 reinzulegen so dass ich ja dann auch
    $query = "SELECT * FROM test2 WHERE nid = '$nid'";
    abfragen kann und immer den richtien $nid wert habe. leider funktioniert das ja bei mehr als einem datensatz nicht mehr.
    Natürlich geht das bei mehr Datensätzen auch. NUR musst du dann die Ergebnisse entsprechend zwischenspeichern und verarbeiten. ABER is ja ne menge Overhead und kann viel effizienter und eingacher gelöst werden(wird man aber sowieso nie so machen ):

    Du kannst alles in einem Select machen durch verwendung von aliases:

    $test = 3;
    $query = "SELECT tabelle_1.*, tabelle_2.text FROM test1_$test as tabelle_1, test2 as tabelle_2 WHERE tabelle_1.nid = tabelle_2.nid";

    Liefert alle Datensätze(rows) mit allen Spalten von tabelle1_3 und die Spalte text aus test2 in denen die Spalte nid bei beiden Tabellen übereinstimmt.

    Willst du verhindern dass auch rows ausgegeben werden, falls ein wert NULL ist, so kannst folgendes query machen:

    $query = "SELECT DISTINCT tabelle_1.*, tabelle_2.text FROM test1_$test as tabelle_1, test2 as tabelle_2 WHERE tabelle_1.nid = tabelle_2.nid";

    Grüsse

    [Editiert von iQD am 20-11-2001 um 03:54]
    FreeBSD - Unleash the daemon inside your PC

    Kommentar


    • #3
      vielen vielen dank. hat super geklappt.
      und erstaunlich, dass es auch so kurz und einfach geht

      Kommentar

      Lädt...
      X