0

複数のテーブルの複数の列から値を取得しようとしています。コードは次のようになります。

<?php

$connect = mysql_connect("localhost","en","]9");

mysql_select_db("en");
$result = mysql_query("SELECT title, field_id_1 FROM exp_channel_titles, exp_channel_data") or die(mysql_error());

// check for empty result
if (mysql_num_rows($result) > 0) {
    // looping through all results
    // products node
    $response["video_path"] = array();

    while ($row = mysql_fetch_array($result)) {
       // temp user array
        $s1 = explode('"',$row['field_id_1']);
        $path = array();
        $path["field_id_1"] = $s1[5];
       $path["title"] = $row["title"];
        array_push($response["video_path"], $path);
    }
    // success
    $response["success"] = 1;
     // echoing JSON response
    echo json_encode($response);
} else {
    // no products found
    $response["success"] = 0;
    $response["message"] = "No products found";

    // echo no users JSON
    echo json_encode($response);
}
?>

結果では、値が 1 回だけではなく 2 回表示されています。2 つのテーブルを確認しましたが、これら 2 つのテーブルには同じ名前の列が含まれています。

4

2 に答える 2

1

mysql クライアントのコードからクエリを実行しましたか?

暗黙のクロス結合を行っているため、結果が重複しているように見えます。実際、両方のテーブルのデカルト積を取得しています。

これについて詳しくはhttp://en.wikipedia.org/wiki/Join_%28SQL%29#Cross_joinを参照し、左結合の使用を検討してください。

テーブルのスキーマを公開していないので、これ以上は言えません。

于 2013-05-01T11:18:55.743 に答える
0

クエリのCehck出力

exp_channel_titles、exp_channel_dataからタイトル、field_id_1を選択

関係に基づいて 2 つのテーブルを結合します. 個別に使用します. これで問題が解決します.

于 2013-05-01T11:15:09.103 に答える