Сложный вложенный запрос SQL

Я работаю над школьным проектом, который состоит из приложения в php, подобного Facebook, и у меня возникли некоторые проблемы с одним хитрым SQL-запросом.

Моя конфигурация БД выглядит так:

введите описание изображения здесь

Я хочу получить друзей моего друга, которых нет в моем списке друзей, чтобы рекомендовать их,

Мой SQL-запрос, чтобы получить мой список друзей, работает должным образом, так что я делаю, что я зацикливаю всех своих друзей, и я выбираю их друзей, но здесь,
я не знаю, как выбрать их, не выбирая друга, который уже мой друг

Вот как я перебираю каждого друга:
(Я не думаю, что это хороший способ сделать это)

<?php
function recommendation($id)
{
global $pdo;
$sql = "SELECT *
FROM user u
LEFT JOIN friends f on u.id = f.iduser
WHERE isvalidate = 1
AND ((f.iduser = ? AND u.id != ?) OR ((f.idfriend = ? AND u.id != ?)))
GROUP BY u.id";

$q = $pdo->prepare($sql);
$q->execute(array($id, $id, $id, $id));
echo "<p>Vous connaisser peut etre:</p>
<ul id ='recommendation'>";
$amiscommun = array();

while ($line = $q->fetch()) {
//recupération de la liste des amis
//Pour chaque amis recupération de leur liste d'amis egalement
$sql = "SELECT *
FROM user u
LEFT JOIN friends f on u.id = f.iduser
WHERE isvalidate = 1
AND (((f.iduser = ? AND u.id != ?) OR ((f.idfriend = ? AND u.id != ?)))
AND ((f.iduser = ? AND u.id != ?) OR ((f.idfriend = ? AND u.id != ?))))
AND (f.iduser != (SELECT * FROM))
GROUP BY u.id";
$q2 = $pdo->prepare($sql);
$q2->execute(array($line['id'], $line['id'], $line['id'], $line['id'], $line['id'], $id, $line['id'], $id));

$amis = array();
while ($line2 = $q2->fetch()) {
echo "<li>" . $line2['login'] . " est un amis de " . $line['login'] . "</li>";
$amis[$line['login']][] = array($line2['login']);

$amiscommunnbr[$line2['login']][] = $line['login'];
//Stockage a chaque iteration de boucle des amis commun dans un tableau
}
}
$newarray = $amiscommunnbr;

if (!empty($newarray)) {
foreach ($newarray as $key => $value) {

$nbr = count($value);
echo "<li><a href='index.php?action=bio?" . $key . "'>" . $key . "</a>- " . $nbr . " Amis en commun(";
foreach ($value as $key2 => $value2) {

echo "<a href='index.php?action=bio?" . $value2 . "'>" . $value2 . "</a>";

}
echo ")</li>";
}
}
echo "</ul>";
}

0

Решение

«выбрать * из друзей, где iduser в (выберите пользователя GROUP_CONCAT (idFriend) из формы u ИСПОЛЬЗОВАТЬ друзей из f, где f.iduser = u.id и u.id = $ uid) И ID NOT IN (выберите GROUP_CONCAT (id) из друзей, где iduser = $ id) «;

Я думаю, что это поможет вам. Дайте мне знать, если у вас возникнут какие-либо проблемы с этим.
: Я обновил запрос.

1

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector