У меня есть следующий запрос, который объединяет несколько таблиц
SELECT targa,
registrazioni.turno as turno,
conduttori.nome as nome,
conduttori.cognome as cognome,
spese_importo,risparmio,km, SUM(spese.spese_importo) AS totspese
FROM registrazioni LEFT JOIN conduttori
ON id_conduttore=conduttori.id
LEFT JOIN spese
ON registrazioni.id=spese.id_registrazione
WHERE dataora='$data';
Когда я добавил эту СУММ (spese.spese_importo), у меня возникла небольшая проблема, и даже если запрос не должен был иметь для меня какой-либо соответствующий результат, я получаю в результате пустую строку, в которой каждое поле равно NULL.
Конечно, если я удалю эту СУММ из своего запроса, он снова заработает, и у меня не будет строк в результате запроса.
Как я могу решить эту проблему и проверить, есть ли результаты, отличные от нуля?
Я пробовал через mysql добавить условие
WHERE targa IS NOT NULL
(targa - это всего лишь одно поле, которое я случайным образом выбираю между разными полями, все они NULL)
Но он не очистил строку, и через php я использовал условие
mysqli_num_rows($result)==0
Но теперь, когда у меня всегда есть хотя бы одна строка, это не работает.
Какие-нибудь другие идеи для проверки перед получением строк?
2 ответа
Из http://www.w3schools.com/sql/sql_join_left.asp:
Ключевое слово LEFT JOIN возвращает все строки из левой таблицы (table1) с соответствующими строками в> правой таблице (table2). Если совпадения нет, то результат будет NULL с правой стороны.
Создает ли включение sum (spese.spese_importo) ситуацию, при которой вы получите совпадение с левой стороны соединения, но не с правой стороны - и получите эти NULL?
Я думаю, вы хотите сгруппировать свои результаты. Попробуйте добавить это в конце вашего запроса:
GROUP BY registrazioni.id
Похожие вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.