Ответ 1
Попробуйте изменить понравившиеся...
count(select * from bookings where b.id_customer = c.id)
... до...
(select count(*) from bookings where b.id_customer = c.id)
heres мой код:
$sql = mysql_query("select c.name, c.address, c.postcode, c.dob, c.mobile, c.email,
count(select * from bookings where b.id_customer = c.id) as purchased, count(select * from bookings where b.the_date > $now) as remaining,
from customers as c, bookings as b
where b.id_customer = c.id
order by c.name asc");
вы можете видеть, что я пытаюсь сделать, но я не уверен, как правильно писать этот запрос.
появляется ошибка, которую я получаю:
Предупреждение: mysql_fetch_assoc(): поставляется аргумент не является допустимым результатом MySQL ресурс
heres my mysql_fetch_assoc:
<?php
while ($row = mysql_fetch_assoc($sql))
{
?>
<tr>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['mobile']; ?></td>
<td><?php echo $row['email']; ?></td>
<td><?php echo $row['purchased']; ?></td>
<td><?php echo $row['remaining']; ?></td>
</tr>
<?php
}
?>
Попробуйте изменить понравившиеся...
count(select * from bookings where b.id_customer = c.id)
... до...
(select count(*) from bookings where b.id_customer = c.id)
В вашем запросе неправильно используется COUNT, который был покрыт @В ответ....
Я также хотел бы предложить, возможно, лучшую построенную альтернативу, которая, я думаю, отражает ту же логику:
SELECT
c.name,
c.address,
c.postcode,
c.dob,
c.mobile,
c.email,
COUNT(*) AS purchased,
COUNT(b.the_date > $now OR NULL) AS remaining
FROM customers AS c
INNER JOIN bookings AS b ON b.id_customer = c.id
GROUP BY c.id
ORDER BY c.name ASC
Примечание. Обычно вы должны включать все неагрегированные выражения SELECT в GROUP BY. Однако MySQL поддерживает сокращенные списки GROUP BY, поэтому достаточно указать ключевые выражения, которые однозначно идентифицируют все неагрегированные данные, которые вы вытягиваете. Пожалуйста, избегайте использования функции произвольно. Если столбец, не включенный в GROUP BY, имеет более одного значения для каждой группы, у вас нет элемента управления, значение которого действительно будет возвращено при вытягивании этого столбца без агрегации.. p >