Каков самый быстрый и эффективный способ объединить два запроса MYSQL в один результат JSON [дубликат]Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Каков самый быстрый и эффективный способ объединить два запроса MYSQL в один результат JSON [дубликат]

Сообщение Anonymous »

Я знаю, как использовать базовые запросы SQL, но мне нужно знать, как лучше всего объединить два запроса.
Например, я могу вывести пользователей на определенном расстоянии, и это автоматически добавит поле расстояния. В идеале я хотел бы выполнить дополнительный запрос к другой таблице и добавить еще одно поле к выводу. Я пытаюсь объяснить это как можно лучше, поэтому, пожалуйста, потерпите, если это покажется вам странным.
Я изучил UNION и JOIN s, но не могу полностью понять концепцию.
Поэтому я могу выполнить запрос, чтобы получить пользователей на определенном расстоянии, как я уже сказал, из таблицы с именем пользователи Для простоты Я уже добавил LAT и LNG для исходных координат. :-

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

$logged_user = $_GET["logged_user"];

$sql = "SELECT
*,
(
3959 *
acos(cos(radians(52.41357)) *
cos(radians(lat)) *
cos(radians(lng) -
radians(-1.51314816)) +
sin(radians(52.41357)) *
sin(radians(lat )))
) AS distance
FROM users
HAVING distance < 10
ORDER BY distance LIMIT 0,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);
Это выведет что-то вроде: -

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

[{"id":"10102","userID":"933ce029-e0b3-4e18-ad52-9e6c2019189b","name":"test","username":"test","verified":"YES","lat":"52.4194975","lng":"-1.5101260","status":"offline","distance":"0.4289222996651918"}],
Это автоматически добавит расстояние до таблицы к выходным данным. Как мне затем проверить, понравился ли logged_user другому пользователю из первого результата из другой таблицы?
Вторая таблица под названием isLike просто имеет 2 поля, from_user и to_user, from_user будет зарегистрированным_пользователем. В нынешнем виде я выполняю еще один отдельный запрос, например: -

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

$logged_user = $_GET["logged_user"];
$to_user = $_GET["to_user"];

$sql="SELECT * FROM likes  WHERE to_user = '$to_user' AND logged_user = '$logged_user'";
$result = mysqli_query($conn, $sql) or die("Error in Selecting " . mysqli_error($conn));

if ($result->num_rows > 0) {
echo "true";
} else {
echo "false";
}
Как видите, это далеко от идеала, и приходится выполнять запрос для каждого пользователя индивидуально. To_user — это идентификатор пользователя из первых результатов.
Поэтому я хотел бы проверить, есть ли в logged_user запись каждого из to_user из первого результата и добавьте новое поле с именем isLiked со значением true или false.
Идеальный результат: -

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

[{"id":"10102","userID":"933ce029-e0b3-4e18-ad52-9e6c2019189b","name":"b","username":"933","verified":"YES","lat":"52.4194975","lng":"-1.5101260","status":"offline","distance":"0.4289222996651918","isLiked":"true"}],
Я знаю, и мне очень жаль, если я объяснил это так, что это трудно понять, но я не могу выразить это по-другому.
Итак, какой метод лучше, или я подхожу к этому совершенно неправильно? Я никого не прошу это делать, просто укажите мне правильное направление.
Заранее большое спасибо

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

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

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

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

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

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

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