Здравствуйте.Помогите разобраться с одной проблемкой. Суть такова. Есть таблица с двумя полями id_e - идентификатор мероприятия и id_p - идентификатор человека. Люди посещают мероприятия при этом в эту таблицу делаеться соответстующая запись. Необходимо сделать следущее.Выбирается 2 или более человека(вернее выбираються сразу их id_p) и по ним выводиться список мероприятий на которых они присутстовали все вместе. Сейчас я это делаю следущим обзаром:По каждому человеку выбираю все мероприятия и загоняю результат в массив,а потом нахожу точки пересечения этих массивов.Но помоему такой способ мягко говоря далек от идеального,может это все можно реализовать на уровне sql запроса? Заранее благодарен
Да. Надо в условии WHERE написать тоже самое, что ты описал на русском. Выбрать все мероприятия, на которых участвовали все эти люди. Например так: SELECT id_e FROM table WHERE id_p=1 AND id_p=2 Загляни в мою подпись, там лучше написано.
в том то и дело что когда я так делаю - скрипт ничего не выводит.Хотя может я туплю. Подскажите где неправ PHP: $result = mysql_query ("SELECT id_e from p_on_e WHERE id_p='1' AND id_p='4' "); while(list($id_e) = mysql_fetch_row($result)) { print $id_e; } кусок БД [sql] id_e id_p 1 2 2 1 3 1 4 1 3 3 4 4 2 4[/sql] В итоге он мне должен вывести 2 и 4 так как по БД люди с Идентификатором 1и 4 присутствовали вместе на совытиях с id 2 и 4
одновременно и 1 и 4 быть не может, да. [sql]select distinct(t1.id_e) from table t1, table t2 where t1.id_e=t2.id_e and t1.id_p=1 and t2.id_p=4[/sql] это понятно что делает?
гм...ну в общих чертах. То есть мне нужно иметь копию моей таблицы. t1 и t2 ведь я так понимаю должны быть одинаковы? Значит оптимизировать не получиться и стоит оставить все как было - через поиск точек пересечения массивов?
извините,всетаки я туплю. вот моя исходная таблица называеться p_on_e то есть мне в вашем коде нужно менять t1 на p_on_e?а со значнием t2 что делать? [sql]select distinct(t1.id_e) from table t1, table t2 where t1.id_e=t2.id_e and t1.id_p=1 and t2.id_p=4[/sql] у меня все время ругаеться: Код (Text): Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in после того как я пытаюсь выполнить PHP: while(list($id_e) = mysql_fetch_row($result)) сразу после запроса
ты понимаешь что делает эта строчка? просто делай PHP: $row=mysql_fetch_assoc($result); echo '<pre>'; print_r($row); echo '</pre>'; и смотри результат запроса. Когда его напишешь. Синтаксис запроса в моей подписи изцчи сам и напиши сюда, где имя таблицы, а где ее псевдоним. Для начала просто выбери одну запись. и пользуйся консолью или оболочкой для проверки запросов, а то будешь путать ошибки в запросе и ошибки в скрипте.
выводит в цикле результут запроса..... понятно что t1 это реальная таблица,а t2 ее псевоним. но мускуль все равно ругаеться что "#1146 - Table 'db.t2' doesn't exist"