2012-01-02 2 views
0

Допустим, у меня есть этот MySQL таблицу:MySQL - Поиск поле дважды

SQL

OK .. посмотреть type поле? Тип 0 - это когда человек ЗНАЕТ, а язык и тип 1 - это когда человек изучает этот язык.

и скажем, у меня есть некоторые данные:

enter image description here

Как вы можете видеть, член 3 соответствует uid (идентификатор пользователя). Пользователь 3 KNOWS Китайский из-за типа 0, но где был Пользователь 1 is LEARNING Chinese из-за типа 1.

И, наконец, предположим, что я делаю форму. Он имеет два поля select, заполненные массивом выбора языка. После определенного представления ... $lang_learning выходы zh и $language_know выходы en. Как мне найти человека, который говорит zh, и учится en, не вступая в противоречие с полем language, так как вы в основном ищете его дважды?

Спасибо.

ответ

3

You

SELECT t1.uid 
FROM languages t1 
INNER JOIN languages t2 ON t1.uid = t2.uid 
WHERE t1.language = 'zh' AND t1.type = 0 
    AND t2.language = 'en' AND t2.type = 1; 
Адрес электронной почты:
0

Вы не можете сделать это с помощью простого запроса, так как стандартные предложения «где» рассматривают записи по строкам. . Простые запросы не могут сделать «выбрать запись, где поле Х„а“в одной записи и поля X является„Ъ“в другой

Для этого вам понадобится присоединиться:

SELECT knows.uid 
FROM yourtable AS knows 
INNER JOIN yourtable AS learning ON knows.uid = learning.uid 
WHERE (knows.language='zh' AND knows.type=0) AND (learning.language='en' AND knows.type=1) 
Смежные вопросы