Ann: SQL Abfrage von 2 Tabellen

Moin,

ich brauche mal dringend eure Hilfe und würde mich freuen wenn Ihr mir helfen könntet.
Ich möchte mit PHP eine verteilte MySQl DB abfragen, weiss aber nicht wie ich dies realisieren soll.
Einfache Abfragen sind für mich kein Problem, aber hier weiss ich nicht wo ich ansetzen muss.

|============|          |============|
|geraete     |          |agentur     |
|------------|          |------------|
|geraeteID   |   /----->|agenturID   |
|geraeteName |   |      |agenturName |
|geraeteType |   |      |============|
|serienNummer|   |
|agenturID   |<--/
|============|

Ich suche nach einer Möglichkeit, das Ergebnis aus den beiden Tabellen so auszugeben.

|============|
|geraeteID   |
|geraeteName |
|geraeteType |
|serienNummer|
|agenturName |
|============|

Wisst Ihr vielleicht eine Lösung auf mein Problem?

Ann

  1. Hi,

    |============|          |============|
    |geraete     |          |agentur     |
    |------------|          |------------|
    |geraeteID   |   /----->|agenturID   |
    |geraeteName |   |      |agenturName |
    |geraeteType |   |      |============|
    |serienNummer|   |
    |agenturID   |<--/
    |============|

    |============|
    |geraeteID   |
    |geraeteName |
    |geraeteType |
    |serienNummer|
    |agenturName |
    |============|

    Es gibt sicherlich mehrere Möglichkeiten:

    eine davon:

    SELECT g.geraeteID,g.geraeteName,g.geraeteType,g.serienNummer,a.agenturID FROM
    geraete g, agentur a WHERE <--deine Bedingungen -->

    oder aber auch

    SELECT * FROM geraete, agentur WHERE <--deine Bedingungen-->

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist
  2. Hi,

    was du machen möchtest nennt sich JOIN der Syntax lautet:

    SELECT geraeteID,geraeteType,serienNummer,agenturName FROM geraete,agentur WHERE geraete.agenturID = agentur.agenturID

    Natürlich lässt sich das noch durch weitere WHERE Bedingungen verknüpft mit OR oder AND erweitern. ORDER BY, LIMIT sind auch hilfreich.

    Gruß
    bastian

    1. SELECT geraeteID ..

      sorry, hier natürlich vor dem Spaltennamen den tabellenname z.B.

      geraete.geraeteID statt geraeteID

    2. Hi bastian,

      SELECT geraeteID,geraeteType,serienNummer,agenturName FROM geraete,agentur WHERE geraete.agenturID = agentur.agenturID

      ich habe mich warscheinlich etwas falsch ausgedrückt. Die Abfrage, habe ich genau so wie Du. Was mir Kopfzerbrechen macht ich das PHP.

      Ich habe es bis jetzt so:

      $result = @mysql_db_query($dbname, "SELECT geraeteID,geraeteType,serienNummer,agenturName FROM geraete,agentur WHERE geraete.agenturID = agentur.agenturID", $db);
      $row = @mysql_num_rows($result);

      und wollte mit ner Schleife

      for ($i=0;$i<$row;$i++) {

      }

      die Tabelle Ausgeben. Aber genau da komme ich nicht weiter.

      Ann

      1. Hi,

        Hi bastian,

        ich fühl mich mal trotzdem angesprochen ;)

        $result = @mysql_db_query($dbname, "SELECT geraeteID,geraeteType,serienNummer,agenturName FROM geraete,agentur WHERE geraete.agenturID = agentur.agenturID", $db);
        $row = @mysql_num_rows($result);

        jetzt fehlt noch ein $ausgabe = mysql_fetch_array()

        und dieses array das Du dann hast kannst Du ausgeben, bzw. mit den Namen ansprechen
        a la: $ausgabe["serienNummer"];

        alles klar?

        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        ->Alles ist gut wenn es aus Schokolade ist
        1. Hi romy,

          danke für deine Hilfe.

          Ann

      2. $result = @mysql_db_query($dbname, "SELECT geraeteID,geraeteType,serienNummer,agenturName FROM geraete,agentur WHERE geraete.agenturID = agentur.agenturID", $db);

        while (mysql_fetch_row($result))
         {
          $i=0;
          while ($i < mysql_num_fields($result))
           {
            $i++;
            $spalte = mysql_field_name($select, $i);
            $row[$spalte] = mysql_result($select, $i);
           }
          $tbl[] = $row;
         }

        Das sollte dir ein 2DIm array geben in der form $tbl[int zeilenNummer][string SpaltenName]

        Ich hoffe das hilft dir.

        Gruß
        Bastian