2013-06-13 2 views
0

У меня есть две таблицы в моей базе данных. Таблица A является ПОЛЬЗОВАТЕЛЕМ, а таблица B - отношениями, а следующие - их столбцы ПОЛЬЗОВАТЕЛИ (имя пользователя, аватар, специальность) и ОТНОШЕНИЯ (имя пользователя1, имя_пользователя2, рельдир) ОТНОШЕНИЯ сохраняет отношения между пользователями, то есть, имя_пользователя1 следует за именем пользователя2 , reldir = F, и если они оба следуют друг за другом, reldir = FB и наоборот, эта часть работает очень хорошо, ноPhp mysql запрос для данных из двух таблиц

Мне нужно запросить эти таблицы, чтобы я возвращал список пользователей из ПОЛЬЗОВАТЕЛЕЙ, которые для пример пользователь а оленья кожа следовать, но иметь такую ​​же специальность, как и ...

я попытался это, но он не работает хорошо ...

$ спекуляция = й e специальность пользователя A

SELECT a.username, a.avatar, a.specialty FROM users a, relations b WHERE a.username!=b.username2 AND (b.reldir!='F' OR b.reldir!='FB') AND a.speciality ='$spec' 

запрос ко мне кажется логически правильным, но я могу ошибаться. Мне нужна помощь

+0

В MySQL нет оператора '! ='. – marekful

+2

В MySQL оба '! =' И '<>' являются 'не равными операторами', http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html –

+0

, но! = Работает как < > – sbxmal

ответ

0

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

Например, таблица USERS:

id (as primary_key), username, avatar, specialty 

Таблица RELATIONS:

user_id, username2, reldir 

user_id - это поле "Идентификатор" из таблицы ПОЛЬЗОВАТЕЛЕЙ (а ваш "username1")

Тогда вы сможете создать такой запрос:

SELECT a.* 
FROM users a, relations b 
WHERE a.id = b.users_id 
    AND (b.reldir != 'F' OR b.reldir != 'FB') 
    AND a.speciality = '$spec' 

ps: если я правильно понял ваш вопрос)

+0

@sbmxal, спасибо, но имя пользователя уже является ключом ПОЛЬЗОВАТЕЛЕЙ и в вашем запросе на (a.id = b.users_id), к сожалению, это неверно, так как мне нужно отфильтровать имена, которые следует A, и вернуть их A не следует, поэтому мы должны оставить его как a.username! = B.username2, , поэтому я отредактировал запрос и сделал его (SELECT a. * FROM users a, отношения b WHERE a.username! = B.username2 AND (b.reldir! = '$ F' ИЛИ ​​b.reldir! = '$ Fb') И a.username! = '$ U1' AND a.specialty = '$ spec') ...... ...... $ fb = 'FB'; $ f = 'F'; $ u1 = имя пользователя A , он работает, но он все равно возвращает имена, которые A следует уже – Jay

Смежные вопросы