У меня немного вопроса ...MSQL + PHP - Проверьте вопросы Query
Так что я пытаюсь сделать это:
У меня есть пользовательская таблица:
-------------------------
| Table: userlist |
-------------------------
| Id | GuestOf | User |
|-----------------------|
| 0 | System | Bill |
|-----------------------|
| 1 | Bill | Jason |
|-----------------------|
| 2 | Jason | Jack |
|-----------------------|
| 3 | Jason | Jill |
|-----------------------|
| 4 | Jack | Matt |
|-----------------------|
| 5 | Jill | Stu |
|-----------------------|
| 6 | Jack | Gwen |
|-----------------------|
| 7 | Jill | Frank |
|-----------------------|
В основном, гости Джейсона - Джек и Джилл, гости Джека - Мэтт и Гвен, а гости Джилл - Стю и Фрэнк.
Теперь я хочу узнать, есть ли у гостей Джейсона оба их гостей.
Но я могу проверять это каждый раз, когда к списку добавляется новый гость. В этом случае, когда Фрэнк добавляется в список Джилл.
Это код, который я сейчас использую:
function countGuests($User) {
$sql = "SELECT COUNT(`Id`) CntId FROM `userlist` WHERE `GuestOf` LIKE '$User'";
$res = mysql_query($sql);
$temp = mysql_fetch_array($res, MYSQL_BOTH);
return $temp["CntId"];
}
function checkCompletion($UserId) {
$population = array();
$sql = "SELECT `User` FROM `userlist` WHERE `GuestOf` LIKE '$UserId'";
$res = mysql_query($sql);
if (mysql_num_rows($res) > 0) {
while ($temp = mysql_fetch_array($res, MYSQL_BOTH)) {
$population[] = $temp["User"];
}
$partialPop = 0;
for ($i = 0; $i < count($populaton); ++$i) {
$partialPop = $partialPop + countGuests($population[$i]);
}
}
return $partialPop;
}
Который должен дать мне результат: 7 (Джейсон, Джек, Джилл, Мэтт, Гвен, Стю, Франк)
Однако, Я получаю результат: 0. Что случилось с моим запросом?
Я был бы признателен за любую помощь/корректировки ...
Спасибо!
Рассматривали ли вы перестройку своей базы данных? странный метод для отношений – Daimos
Вы должны создать таблицу с отношением гостей. В этом базовом примере нет большой разницы, но когда вы начинаете добавлять информацию в свои таблицы (пол, адрес, даты и т. Д.), Эта проблема важна. –
AFAIK, эта таблица является иерархической. Проверьте это id = 0 (system): это корень всей структуры. Вам не хватает важной информации. Запрашиваемая информация - это получение списков всех гостей в системе ??? если это вопрос, вы должны начать думать о рекурсивной функции. –