1

これはクエリです:

SELECT * FROM property_table AS property

INNER JOIN property_classification AS classifications
        ON property.classification_id = classifications.id

INNER JOIN property_classification AS classonrequest
        ON property.classonrequest_id = classonrequest.id

WHERE property.id=5000 LIMIT 1;

property_classification2 つのフィールドproperty.classification_idとで同じテーブルを使用していることに注意してくださいproperty.classonrequest_id

の構造property_classificationは次のようなものです。

id | a1 | a2 | a3 | ... | d1 | d2

上記のクエリを MySQL Query Browser で実行すると、次のような結果が得られます。

id | other 'property' fields | id | a1 | a2 | a3 | ... | id | a1 | a2 | a3 | ...

しかし、私の PHP スクリプトでは、関連付けられた配列を返しているため、重複するフィールド名はすべて上書きされます。

私が欲しいのは、2つの結合されたテーブルをテーブルの名前で返すクエリです。

classifications.id | classifications.a1 | classifications.a2 | classifications.a3

classonrequest.id | classonrequest.a1 | classonrequest.a2 | classonrequest.a3

それ、どうやったら出来るの?

4

2 に答える 2

1

テーブル エイリアスを使用し、列の名前を変更する必要があります。

SELECT classifications.id as cid,
       classifications.a1 as c_a1,
       . . .
       classificaitions.d2 as c_d2
       classonrequest.a1 as cr_a1,
       . . .
FROM property_table AS property
INNER JOIN property_classification AS classifications
        ON property.classification_id = classifications.id
INNER JOIN property_classification AS classonrequest
        ON property.classonrequest_id = classonrequest.id
WHERE property.id=5000
LIMIT 1;

ジョブを簡単にするために、次のようなクエリを実行できます。

select concat('c_', column_name, ', ')
from information_schema.columns
where table_name = 'classification';

これにより、最初のグループのすべての列名が一覧表示されます (別のプレフィックスを使用して、2 番目のグループについて繰り返すことができます。

于 2013-09-15T14:35:35.093 に答える
0
SELECT property.*, classifications.*, classonrequest.* FROM property_table AS property

INNER JOIN property_classification AS classifications
        ON property.classification_id = classifications.id

INNER JOIN property_classification AS classonrequest
        ON property.classonrequest_id = classonrequest.id

WHERE property.id=5000 LIMIT 1;

ただし、特定のテーブル名は取得できません。

于 2013-09-15T14:38:38.377 に答える