1

すべてのメンバーとすべてのメンバーのボートのリストを取得したいと考えています。私がやっている方法では、メンバーが持っている各ボートのメンバー情報を取得します。したがって、John Smith のメンバーが 3 つのボートを所有している場合、John Smith は 3 回表示されます。名前と情報を一度表示し、ボートと一緒に複製する代わりに空の列を表示したい.

SELECT m.memberId, m.fName, m.lName, m.ssn, b.boatId, b.length, bt.type
FROM member AS m
RIGHT JOIN boat AS b
ON m.memberId = b.memberId
INNER JOIN boatType AS bt
ON b.boatTypeId = bt.boatTypeId
4

3 に答える 3

1

あなたが求めていることを理解していれば、Mysql でこのタイプのクエリを生成することはできません。

 Owner 1 details, boat 1 details
                  boat 2 details
                  boat 3 details
 Owner 2 details, boat 4 details
                  boat 5 details

コメントにあるように、このタイプのグループ化は、データを取得した後、表示側で行われます。

于 2012-10-18T19:38:46.627 に答える
1

Joe が示唆したように、MySQL で GROUP_CONCAT および CONCAT 関数を使用できます。

   SELECT m.memberId, m.fName, m.lName, m.ssn, 
          GROUP_CONCAT(CONCAT(b.boatId, '(', bt.type, ':',b.length,' ft.)')
                       ORDER BY bt.boatId SEPARATOR '; ')
     FROM member AS m
LEFT JOIN boat AS b ON m.memberId = b.memberId
     JOIN boatType AS bt ON b.boatTypeId = bt.boatTypeId
 GROUP BY m.memberId, m.fName, m.lName, m.ssn

これにより、このような行が得られます。

1 Larry Ellison 123-45-6789 USA 17(Americas Cup:113 ft.); Rising Sun(Diesel:453 ft.)
2 Ollie Jones 987-65-4321 Scruffy Guppy(Sunfish:12 ft.)
于 2012-10-18T21:05:07.000 に答える
0

group by 句を追加します。

GROUP BY m.member id, m.fName, m.lName, m.ssn

BoatId、長さ、およびタイプのフィールドについては、3 つのボートの ID の長さとタイプ (例を使用して) のどれを表示するかを決定する必要があります。

于 2012-10-18T19:38:32.187 に答える