Можно ли выполнить более одного левого соединения CASE mysqlPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Можно ли выполнить более одного левого соединения CASE mysql

Сообщение Anonymous »

Я пытаюсь запросить более трех таблиц в моей базе данных, чтобы получить один результат JSON. На данный момент я могу добавить один CASE для добавления результирующего поля, и он работает хорошо, но я хотел бы добавить еще один. Код ниже работает, но только для поля isLiked. Я хотел бы добавить hasViewed из другой таблицы под названием «просмотрено», имеющей ту же структуру, что и «просмотрено».

Код: Выделить всё

$logged_user = mysqli_real_escape_string($conn, $_GET["logged_user"]);

$sql = "
SELECT
u.*,
(
3959 * acos(
cos(radians(52.41357)) *
cos(radians(u.lat)) *
cos(radians(u.lng) - radians(-1.51314816)) +
sin(radians(52.41357)) *
sin(radians(u.lat))
)
) AS distance,
CASE
WHEN l.to_user IS NOT NULL THEN 'true'
ELSE 'false'
END AS isLiked
FROM clients u
LEFT JOIN likes l
ON u.userID = l.to_user
AND l.from_user = '$logged_user'
HAVING distance < 10
ORDER BY distance
LIMIT 99";

$result = mysqli_query($conn, $sql) or die("Error in Selecting " . mysqli_error($conn));

$userOnlineStatus = array();
while ($row = mysqli_fetch_assoc($result)) {
$userOnlineStatus[] = $row;
}

echo json_encode($userOnlineStatus);
Я пытался, но безуспешно.
Я добавил и добавил поле «hasViewed», но результат тот же, что и «isLiked»: -

Код: Выделить всё

    CASE
WHEN l.to_user IS NOT NULL THEN 'true'
ELSE 'false'
END AS hasViewed
Я попробовал добавить новое LEFT JOIN: -

Код: Выделить всё

LEFT JOIN viewed l
ON u.userID = l.to_user
AND l.from_user = '$logged_user'
Итак, я попробовал: -

Код: Выделить всё

 CASE
WHEN l.to_user IS NOT NULL THEN 'true'
ELSE 'false'
END AS isLiked,

CASE
WHEN 2.to_user IS NOT NULL THEN 'true'
ELSE 'false'
END AS hasViewed

FROM clients u

LEFT JOIN likes l
ON u.userID = l.to_user
AND l.from_user = '$logged_user',

LEFT JOIN viewed 2
ON u.userID = 2.to_user
AND 2.from_user = '$logged_user'
Я получаю эту ошибку: -

Неустранимая ошибка: Неперехваченное исключение mysqli_sql_Exception: у вас есть ошибка в вашем
Синтаксис SQL; проверьте руководство, соответствующее версии вашего сервера MariaDB
, чтобы найти правильный синтаксис для использования рядом с 'to_user IS NOT NULL THEN
'true' ELSE 'false' END AS hasViewed ...' в строке 19 вC:\Users\julia\OneDrive\Desktop\XAMPP\htdocs\info2.php:46 Трассировка стека:
#0 C:\Users\julia\OneDrive\Desktop\XAMPP\htdocs\info2.php(46): mysqli_query(Object(mysqli), '\r\nSELECT \r\n ...') #1 {main} throwв C:\Users\julia\OneDrive\Desktop\XAMPP\htdocs\info2.php в строке 46

Возможно ли это, или мне нужно попробовать другой подход, это, по сути, все, о чем я прошу.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -left-join
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»