0

複数のテーブルから行を選択するクエリが作成されます...次に、必要な情報(つまりheadline、そこから取得されます)

$sql="(SELECT `headline`,`date` FROM `arts`)

UNION

(SELECT `headline`,`date` FROM `lead_news`)

UNION

(SELECT `headline`,`date` FROM `opinion_analysis`)

UNION

(SELECT `headline`,`date` FROM `politics`)

UNION

(SELECT `headline`,`date` FROM `top_news`)

UNION

(SELECT `headline`,`date` FROM `lifestyle`)

ORDER BY `date` DESC LIMIT $limit  ";
$result=mysql_query($sql);
while($row=mysql_fetch_assoc($result)){
    echo trim(htmlspecialchars_decode($row['headline']));
}

tableまた、それぞれの名前を見つける必要があります$rowここで、クエリが次のようになることを示唆するソリューションを見つけました。

"SELECT *, table_name as source FROM table_name"$row['source']テーブル名を返すことができます。

しかし、名前を取得するための連想配列キー$rowまたは mysql の組み込み関数があるかどうかを知りたいのですが?

EDIT:私はSELECT次の方法でコマンドを書きました:

SELECT `headline`,`date`, `arts` as `source` FROM `arts`

エラーが発生しました:「フィールドリスト」の不明な列「アート」。ここで採用する方法は何ですか?

4

1 に答える 1

1
SELECT `headline`,`date`, 'arts' as `source` FROM `arts`

文字列「arts」を選択したいので'、バッククォートではなく引用符で囲みます。

しかし、実際には、テーブルの設計は非常に間違っているようです。これらすべての項目が極端に異なる場合を除き、カテゴリごとに 1 つのテーブルではなく、列(または同様のもの) を持つ1 つのテーブルを使用する必要があります。category

于 2013-03-10T11:06:08.667 に答える