0

多次元クエリを作成するのに苦労しています。

私の問題は、たとえば次のクエリです。

SELECT 
    persons.name, 
    contacts.email 
FROM 
    persons
LEFT JOIN 
    contacts ON persons.person_ID = contacts.person_ID
LIMIT 0,10;

必要に応じて 2 つの列を返します。1 つの列は名前が「name」で、もう 1 つの列は名前が「email」です。

しかし、ヘッダーを返す方法は次のとおりです。

'persons.name'

'contacts.email'

(ビューを作成したくない、エイリアスやサブクエリを使用したくない)

それは可能ですか?はいの場合、どのように?

よろしくお願いします。

詳細を説明するには:

クエリ db、メイン テーブル、および列をテーブルに格納しています。列は配列に組み込まれ、その配列に基づいてクエリを作成します

列がサブクエリの場合もあれば、表のセルだけの場合もあれば、2 つ以上の列の値の場合もあります

私の問題は、クエリを動的に構築した後、それを表示する必要があることですが、ヘッダー名を含む配列が table.colname として定義されている場合、

print $row[$array[column_name]]

に評価されますprint $row[persons.name]

しかし、mysql サーバーが生成しているインデックスは、'persons.name' ではなく 'name' です。

それも機能するはずですが、クエリに2つの名前がある場合はあいまいであり、クエリの実行後にwhere条件を渡すオプションが表示されません。

それが、そもそもエイリアスを使いたくない理由です

4

2 に答える 2

1

「AS」キーワードを使用してエイリアスを指定できます

SELECT persons.name as persons.name, contacts.email as contacts.email 
FROM presons 
LEFT JOIN contacts ON persons.person_ID=contatcs.person_ID 
LIMIT 0,10; 
于 2012-08-29T14:34:25.737 に答える
1

エイリアスを使用してみてください

 SELECT persons.name AS 'person.name', contacts.email AS 'contacts.email' FROM presons
 LEFT JOIN contacts ON persons.person_ID=contatcs.person_ID
 LIMIT 0,10;
于 2012-08-29T14:34:45.003 に答える