1

約 3 つのテーブルを選択します。各テーブルには異なるフィールドがあります。1 つは「タイトル」フィールドを持つ場合があり、もう 1 つはフィールド「場所」を持たない場合があります。ここで、これら 3 つのテーブルの共通の出力が必要であり、各行にはタイトルが必要です。出力にフィールド「タイトル」があるテーブルの場合、タイトルはフィールド「タイトル」から取得する必要がありますが、テーブルに「タイトル」がなく「場所」がある場合、出力のタイトルはフィールド「場所」から取得する必要があります。通常の while ループでは、次のようになります。

while ($row = mysql_fetch_array($result)) {
   $marker['###TITEL###'] = $row['title']; 
}

私が今欲しいのは、「柔軟な」$row['flexible'] のようにすることです。したがって、フィールド「タイトル」が存在する場合、存在しない場合は $row['title'] である必要がありますが、「場所」の場合は $row['location'] である必要があります。

これを解決する方法を知っている人はいますか?

よろしく、マシェク

4

2 に答える 2

2

UNION を使用してすべてのテーブルの結果を結合し、フィールドを柔軟にエイリアスすると、結果セットには柔軟な列が含まれます。

SELECT title AS flexible, field2, field3 FROM a
UNION
SELECT location AS flexible, field2, field3 FROM b
于 2010-02-06T11:48:02.507 に答える
0

それが私がそれをする方法です:

while (list($title, $location, $other) = mysql_fetch_array($result)) {
    if (!empty($title)) {
       $row['title'] = $title;
    } else if (!empty($location)) {
       $row['title'] = $location;
    } else {
       $row['title'] = $other;
    }
}

構文が 100% 正しくない場合は申し訳ありません。私はPHPでコーディングしていない長い間あります。

また、私が $row と呼んだ変数は、あなたが質問で $marker と呼んだ変数です。

于 2010-02-06T11:47:32.483 に答える