複数のテーブルを結合するクエリを用意しました。私はこのクエリで完璧な結果を得ています:
SELECT
`request`.`ID` , `request`.`USER_ID` , `donor`.`FULL_NAME` ,
`request`.`BLOOD_GROUP`, `request`.`UNITS` , `city`.`NAME` AS `LOCATION`,
`city`.`ID` AS `LOCATION_ID` , `request`.`DATE` , `request`.`EXPIRES_ON` ,
`request`.`ADDRESS` , `request`.`STATUS`
FROM `request`
JOIN `donor` ON `donor`.`ID` = `request`.`USER_ID`
JOIN `city` ON `city`.`ID` = `request`.`LOCATION`
ORDER BY `request`.`DATE`
ここで、期待しているすべての行を取得しています...
ただし、列 count( ) が追加されたこの 2 番目のクエリは、テーブルresponse.ID
に存在する行が 1 つしかないため、カウント 1 の単一の行を生成していresponse
ます。
これは変更されたクエリです。
SELECT
`request`.`ID` , `request`.`USER_ID` , `donor`.`FULL_NAME` ,
`request`.`BLOOD_GROUP` , `request`.`UNITS` , `city`.`NAME` AS `LOCATION` ,
`city`.`ID` AS `LOCATION_ID` , `request`.`DATE` , `request`.`EXPIRES_ON` ,
`request`.`ADDRESS` , `request`.`STATUS`, count(`response`.`ID`) AS `RESPONSE`
FROM `request`
JOIN `donor` ON `donor`.`ID` = `request`.`USER_ID`
JOIN `city` ON `city`.`ID` = `request`.`LOCATION`
JOIN `response` ON `response`.`REQUEST_ID` = `request`.`ID`
ORDER BY `request`.`DATE`
ここで私が期待しているのは、クエリがテーブルからすべての行を返し、それが 0 であるか任意の整数であるかにかかわらず、request
カウントを返すことです。response
他の質問で使用されている戦略を使用しようとしましたが、うまくいきませんでした。彼らがこれに対する解決策であるかどうか私に提案してください。何もない場合は、カウントのためだけに別のクエリを作成するオプションが 1 つしかありません。