2014-01-21 3 views
-1

У меня есть база данных с 2 таблицами: исследователи и студенты.Ищет совпадения: та же переменная, разные таблицы

Обе таблицы имеют переменную, называемую lastname.

Что я хочу сделать, это искать введенное имя в обеих таблицах.

Когда им введя команду:

SELECT lastname 
    FROM researchers 
    OR students 
    WHERE lastname = $certain_variable 

Я получаю error #105 2 заставляют меня знают переменную двусмысленность.

Как исправить это?

+0

Обе таблицы или любая из таблиц? – tmsimont

+0

Переменная будет именем пользователя, и я хочу выбрать последнее имя. Проблема здесь в том, что имена пользователей и lastnames хранятся в 2 таблицах. – Dylan

ответ

0

EDIT: удален LEFT JOIN ответ после уточнения на вопрос.

Вы можете использовать соединение запрос:

SELECT all_lastnames.lastname FROM (
    SELECT lastname FROM students 
    UNION 
    SELECT lastname FROM researchers 
) all_lastnames 
WHERE lastname = $certain_variable 

В основном то, что делает выбор Lastname из обеих таблиц в 1 «временной таблицы» (созданного UNION), который с псевдонимом all_lastnames. Затем вы можете запустить SELECT на all_lastnames таблице

+0

Это сработало для меня, но только если последнее имя было в таблице исследователей. Ввод последнего имени ученика привел к отображению 0 совпадений. – Dylan

+0

Вы говорите: «Я хочу сделать, это искать введенное имя в обеих таблицах» - вы хотите сказать: «Я хочу сделать, это искать введенное имя в любой из таблиц?» – tmsimont

+0

точно. извините за путаницу – Dylan

0

Вы можете использовать TABLENAME.LastName вместо этого, это устранит двусмысленность.

0

Если у вас есть общие LastName-х между двумя таблицами, использовать

SELECT a.lastname FROM 
researches AS a 
LEFT JOIN students AS b ON (a.lastname=b.lastname) 
WHERE a.lastname = '$var' 

Вы должны указать запрос, что LastName вы хотите (от исследований или студентов) что почему вам нужно указать tablename или tablealias.field.

Если таблицы не имеют общую LastName значения, и вы хотите искать их, чтобы увидеть, где вы найдете фамилию, вы можете использовать UNION:

SELECT 'found researches', lastname FROM researches WHERE lastname = '$var' 
UNION 
SELECT 'found student', lastname FROM students WHERE lastname = '$var' 

Убедитесь, что вы убегаете $ вар.

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