1

これが表1のデータです(人)

Person Table
person_ID | Name | Address
        1 | JC   | 303 Main Street
        2 | NM   | 444 Nowhere Drive

および表 2 (属性)

Attribute table
person_ID | attribute
    1     |   dog
    1     |   cat
    2     |  bearded

テーブルを結合すると、次のビューが表示されます。

person_id | name | attribute
    1     |  JC  |   dog
    1     |  JC  |   cat
    2     |  NM  |  bearded

それらは、左の表からの重複した行です。同じ person_id などが含まれています。最初の 2 つの結果を 1 つの行に結合したいと考えています。このような:

person_id | name | attribute | attribute
    1     |  JC  |   dog          cat
    2     |  NM  |  bearded       NULL

またはこれ:

person_id | name | attribute 
    1     |  JC  |  dog, cat
    2     |  NM  |  bearded       

これが私が試したコードの一部です:

SELECT person.*,Attribute.att FROM `person`,`Attribute` 
WHERE person.`person_id` = Attribute.person_id 
AND name = "" group by person_id

左結合

Select * from person AS P
LEFT JOIN Attribute AS N
ON P.person_id = N.person_id

内部結合も試しました。

4

1 に答える 1

1

MySQL には、行を文字列に連結できるGROUP_CONCAT関数があります。

このようなものが動作するはずです:

SELECT person.*, (
    SELECT GROUP_CONCAT(attribute SEPARATOR ',')
    FROM Attribute
    WHERE person.id = Attribute.person_id
) as attributes
FROM `person`

このマシンには MySQL がありません。

于 2012-08-02T14:46:44.263 に答える