Осталось присоединиться где

$ i table: id, item_name

Таблица $ t: id, имя_члена, имя_позиции

$ u table: id, имя_символа, членство_статус

я бы хотел

  1. перечислите все имена элементов в $ i, даже если их нет в таблице $ t
  2. плюс подсчитать количество item_names в $ t
  3. а затем ограничьте результаты подсчета до значения members_status = ‘active’ в $ u.

Это то, что я до сих пор отвечаю на первую часть моего вопроса:

$find_actives = mysql_query ("select $i.item_name,
count($t.item_name) from $i left
join $t on $i.item_name = $t.item_name group by $t.item_name")

Но когда я изменяю его на запрос ниже, он больше не перечисляет ВСЕ элементы в $ i.

$find_actives = mysql_query ("select $i.item_name,
count($t.item_name) from $i left
join $t on $i.item_name = $t.item_name
where $t.member_name IN (select distinct member_name from $u
where membership_status = 'active' group by member_name)
group by $t.item_name")

Я хотел бы, чтобы результаты выглядели так:

item_name1 — count = 5

item_name2 — count = 0 // это пропавшая строка

item_name3 — count = 2

Как мне этого добиться?

0

Решение

Если я правильно читаю ваш вопрос, думаю, это то, что вы ищете:

SELECT
$i.item_name,
COUNT(temp.item_name) AS item_count
FROM $i
LEFT JOIN (
SELECT $t.item_name AS item_name
FROM $t
INNER JOIN $u
ON $t.member_name = $u.member_name
WHERE $u.membership_status = 'active'
) AS temp
ON $i.item_name = temp.item_name
GROUP BY $i.item_name
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]