Таблица там сложная (выдираю все полезные для админов поля о пользователях), потому сокращу её, чтобы была ясна сама суть того, что надо сделать.
Как у меня сделано всё сейчас (упростил, о чём написал выше):
- Код: выделить все
echo "<table>";
$query = "SELECT f0rums_users.username, f0rums_users.user_id, f0rums_profile_fields_data.pf_skype
FROM f0rums_users
LEFT JOIN f0rums_profile_fields_data
ON f0rums_users.user_id=f0rums_profile_fields_data.user_id
WHERE f0rums_user_group.user_id!=2
ORDER BY f0rums_users.user_regdate DESC";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) :
echo "<tr>";
echo "<td>" . $row['username'] . "</td>";
echo "<td>" . $row['pf_skype'] . "</td>";
echo "</tr>";
endwhile;
echo "</table>";
Теперь перейдём к моей проблеме. Мне не понятно как сделать в таблице колонку, в которой бы отображалось, в группе пользователь или нет (ID группы = "9"). Данные об отношении пользователей к тем или иным группам содержатся в таблице f0rums_user_group.
Пути решения проблемы:
а) Как-то сделать так, чтобы к имеющейся выборке кроме данных таблицы f0rums_profile_fields_data присоединялись и данные таблицы f0rums_user_group. Загвоздка в том, что в f0rums_user_group может быть несколько строк с одинаковым значением user_id, а мне оттуда нужны только те строки с user_id, у которых group_id="9". Как только в моей выборке в каждой строке с уникальным идентификатором user_id появится поле с соответствующим ID группы "9" (то есть, поле, в котором есть девятка, или вообще ничего нет) — всё, я эти данные уже без проблем отображу, так как получится с одной выборки цельная аккуратная таблица, где всё расположено чин чином.
б) Сделать вторую выборку, а затем уже как-то сработаться с имеющимися двумя выборками. Вторую выборку я уже набросал:
- Код: выделить все
$query2 = "SELECT group_id, user_id
FROM f0rums_user_group
WHERE user_id!=2 AND group_id='9'
ORDER BY user_id DESC";
$result2 = mysql_query($query2);
- Код: выделить все
if($row['user_id'] = ____найти,_есть_ли_это_значение_user_id_в_$result2____) {
echo "<td>пользователь в группе</td>";
Надеюсь, я понятно всё описал. Старался.
UPDATED
Для наглядности изображу три таблицы, данные из которых надо выбрать одним запросом (сейчасу у меня выбираются данные лишь из первых двух таблиц, запрос написан выше).
Таблица 1: f0rums_users
- Код: выделить все
----------------------
| user_id | username |
----------------------
| 1 | abc |
| 2 | asdf |
| 3 | xcdf |
| 4 | ugjds |
----------------------
Таблица 2: f0rums_profile_fields_data
- Код: выделить все
----------------------
| user_id | pf_skype |
----------------------
| 1 | abc1 |
| 2 | awsd |
| 3 | xfds |
| 4 | ugj |
----------------------
Таблица 3: f0rums_user_group
- Код: выделить все
----------------------
| user_id | group_id |
----------------------
| 1 | 2 |
| 1 | 3 |
| 2 | 2 |
| 2 | 4 |
| 2 | 5 |
| 2 | 9 |
| 3 | 2 |
| 3 | 4 |
| 4 | 4 |
| 4 | 9 |
----------------------
Из всего этого надо сделать такую выборку:
- Код: выделить все
--------------------------------------------
| user_id | username | pf_skype | group_id |
--------------------------------------------
| 1 | abc | abc1 | |
| 2 | asdf | awsd | 9 |
| 3 | xcdf | xfds | |
| 4 | ugjds | ugj | 9 |
--------------------------------------------













