0

2 つのリレーショナル テーブルがcoreありdomainsます。それらは両方とも と によって関連付けられcore.iddomains.cidいます。coreテーブル内のすべての関連行を含む、テーブル内の 1 つの行を返すことができる 1 つのクエリを作成したいと考えていdomainsます。現在、2 つのクエリを実行しています。1 つはテーブルから必要な 1 つの行を取得するためのものcoreで、もう 1 つはテーブルから関連するすべての行を取得するためのものdomainsですが、クエリを最適化しようとしています。

私は次のようなものを試しました:

SELECT a.domain,b.* FROM domains a WHERE a.cid=1 INNER JOIN core b ON a.cid=b.id

これで問題なく動作しますが、すべて冗長データを含む複数の行が返されます。たとえば、 の 1 つの行にcore関連する 5つの行がある場合domains、5 つの行が返さb.*れ、各結果で明らかに同じになります。すべてが単一の行で返されるように、1 つの行を返す方法はありa.domainますか?

4

1 に答える 1

2
SELECT
  GROUP_CONCAT(d.domain) AS domains,
  c.*
FROM core c
JOIN domains d
  ON d.cid = c.id
WHERE c.id = 1
GROUP BY c.id
于 2012-08-04T16:53:09.420 に答える