我有这 3 个表:
___卡迪斯
|--------|---------|-------------|
| KDX_Id | KDX_VIP | KDX_Regular |
|--------|---------|-------------|
| 1 | No | No |
| 2 | No | No |
|--------|---------|-------------|
___BillableDatas
|--------|---------------|
| BIL_Id | BIL_BookingId |
|--------|---------------|
| 1 | 99 |
| 2 | 99 |
| 3 | 100 |
|--------|---------------|
___预订
|--------|--------------|
| BOO_Id | BOO_ClientId |
|--------|--------------|
| 99 | 1 |
| 100 | 2 |
|--------|--------------|
我想循环到 ___Kardex
并为每个客户端进行计数:
- 客户预订的预订数量(包含在 ___Bookings 中)。
- 客户度过的夜晚数(包含在 ___BillableDatas 中)。
所以我尝试了:
SELECT
KDX_Id,
(
SELECT COUNT(BOO_Id)
FROM ___Bookings
WHERE ___Kardex.KDX_Id = ___Bookings.BOO_ClientId
) AS nb_bookings,
(
SELECT COUNT(BIL_Id)
FROM ___BillableDatas
WHERE ___Kardex.KDX_Id = ___Bookings.BOO_ClientId
AND ___Bookings.BOO_Id = ___BillableDatas.BIL_BookingId
) AS nb_bookings
FROM ___Kardex
但我得到空数据。
你能帮忙吗?
这里是 SQLFiddle:http://sqlfiddle.com/#!9/cf1832
预期结果是:
|--------|-------------|-----------|
| KDX_Id | nb_bookings | nb_nights |
|--------|-------------|-----------|
| 1 | 1 | 2 |
| 2 | 1 | 1 |
|--------|-------------|-----------|
谢谢。
最佳答案
给你:
SELECT
KDX_Id,
(
SELECT COUNT(BOO_Id)
FROM ___Bookings
WHERE KDX_Id = ___Bookings.BOO_ClientId
) AS nb_bookings,
(
SELECT COUNT(BIL_Id)
FROM ___Bookings, ___BillableDatas
WHERE ___Bookings.BOO_Id = ___BillableDatas.BIL_BookingId
AND KDX_Id = ___Bookings.BOO_ClientId
) AS nb_nights
FROM ___Kardex
关于mysql - 使用mySQL计算3个表之间的元素数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49335438/