1対多の関係を持つ2つのテーブルがあります。id列でテーブルを結合します。私の問題は、2番目の(tablekey_id)テーブルから一致するすべてのエントリのカウントが必要ですが、ブール値でマークされた行からの情報が必要なことis_basedomain
です。注意としてis_basedomain
、同じtablekey_idを持つ行のセットごとに=1の行が1つだけあります。
テーブル:テーブルキー
id linkdata_id timestamp
22 9495028175 2013-03-10 01:13:46
23 8392740179 2013-03-10 21:23:25
テーブル:searched_domains。
注:tablekey_idは、テーブルキーテーブルのIDへの外部キーです。
id tablekey_id domain is_basedomain
1 22 somesite.com 1
2 22 yahoo.com 0
3 23 red.com 1
4 23 blue.com 0
5 23 green.com 0
これがImが使用しているクエリです。サブクエリを使用しようとしましたが、現在のtablekey_idのカウントのみを選択できないようで、これは機能しません。
SELECT `tablekey_id`, `linkdata_id`, `timestamp`, `domain`, `is_basedomain`,
(SELECT COUNT(1) AS other FROM `searched_domains` AS dd
ON dd.tablekey_id = d.tablekey_id GROUP BY `tablekey_id`) AS count
FROM `tablekey` AS k
JOIN `searched_domains` AS d
ON k.id = d.tablekey_id
WHERE `is_basedomain` = 1 GROUP BY `tablekey_id`
私が取り戻したい結果は次のとおりです。
tablekey_id linkdata_id timestamp domain is_basedomain count
22 9495028175 2013-03-10 01:13:46 somesite.com 1 2
23 8392740179 2013-03-10 21:23:25 red.com 1 3
誰かがこれを1つのクエリにまとめるのを手伝ってもらえますか?