1

データベースには 2 つのテーブルがあり、1 つは livestock と呼ばれ、もう 1 つは説明です。

Table: livestock
|    id     |      name         |     scientific        |
   (eg 1)      (eg Tree Frog)     (eg hyla marmorata)

Table 2: info
|  scientific     |     description      |
  hyla marmorata     description of h.m

livestock特定の期間からすべてを取得する動的ページがあります。id

$id = mysqli_real_escape_string($_GET['id']);
$query = 'SELECT * FROM `livestock` WHERE `id` = ' . (int) $_GET['id'];

descriptionこれはすべて正常に機能しますが、このレコードのテーブルから取得する必要がありinfoますが、ID と一致しません。その理由は、テーブルにない行がinfoテーブルにあり、id が家畜テーブルを更新するたびに同じではないためです。一部の動物は在庫がなく、すべてlivestockを更新したくないためです。テーブルをdescription更新する時間。ただし、目的のレコードlivestockのフィールドは常に同じです。scientific

以下を試してみましたが、うまくいきませんでした...

$query =   "SELECT info.description, info.scientific, livestock.scientific ".
        "FROM info, livestock ".
        "WHERE info.scientific = livestock.scientific ";
$result2 = mysqli_query($con, $query2) or die(mysqli_error($con));  

        $row2 = mysqli_fetch_array($result2);

        echo $row2['info.description'];

どちらscientificのフィールドも Varchar(100) です。ヘルプ/ガイダンスをいただければ幸いです。

4

1 に答える 1

1

が欲しいと思いますleft outer joinlivestockこれにより、テーブルに一致しないものも含め、すべての行がテーブルに保持されinfoます。

     SELECT i.description, i.scientific, l.scientific
     FROM livestock l left outer join
          info i
          on i.scientific = l.scientific
     WHERE l.id = ' . (int) $_GET['id'];

scientific両方のテーブルからプルしている理由がわかりません。クエリには、それらが等しいという条件が既にあります。を使用する必要がありますl.scientific

于 2013-08-04T12:22:16.523 に答える