2013-03-12 2 views
1

У меня есть три таблицы safe_workers, safe_companies and safe_customers, которые используются для хранения разных типов учетных записей. При входе мне нужен запрос для поиска столбцов LoginEmail и LoginPassword во всех трех таблицах и возврата соответствия на основе формы входа, переданной на странице входа.MYSQL Lookup Email в 3 таблицах из переменной PHP

Я новичок в MySQL и пробовал следующее, но, очевидно, он возвращает ошибку.

select safe_companies.LoginEmail,ID 
from safe_companies,safe_customers 
WHERE LoginEmail='.$_POST[InEmail].' AND LoginPass= '.$_POST[InPass].' 

Я не хочу, чтобы сравнить таблицы просто хочу, чтобы соответствовать

+0

Нам нужно знать, какие условия соединения на вашем столе. После этого это довольно простой запрос. –

ответ

0

Если я понять Ваш вопрос хорошо:

Что вы ищете являются http://dev.mysql.com/doc/refman/5.0/en/join.html

Если обе таблицы имеют colum с именем LoginEmail.

SELECT 
    sco.LoginEmail 
FROM 
    safe_companies AS sco 
INNER JOIN 
    safe_customers AS scu ON (sco.LoginEmail = scu.LoginEmail) 
WHERE 
    sco.LoginEmail = '" . $_POST['InEmail'] . "' AND 
    scu.LoginPass = '" . $_POST['InPass'] . "' 

Если нет, предоставьте дополнительную информацию, например, таблицы.

0

Я не знаю, правильно ли я это понял, но если бы я это сделал, вы могли бы использовать заявление UNION, чтобы выполнить это. Попробуйте это:

$where = 'WHERE LoginEmail = "'.$_POST['inEmail'].'" AND LoginPass = "'.$_POST['inPass'].'"'; 
$query = array(); 
foreach (array('safe_workers', 'safe_companies', 'safe_customers') as $table) // Your tables 
    $query[] = '(SELECT LoginEmail, ID FROM '.$table.' '.$where.')'; 
var_dump(implode(' UNION ', $query)); // Replace var_dump() with your custom method to execute queries 
+0

Спасибо vcampitelli !! Это решение сработало !!! Я еще не понимаю JOIN, но это следующая вещь в моем списке. –

0

Я делаю предположение, основанное на ваших деталях вопроса о том, что значение LoginEmail и LoginPass для конкретного пользователя будет существовать только в одном из трех таблиц. Если это так, вы можете использовать UNION, как показано ниже.

SELECT a.LoginEmail, a.ID 
FROM (
    SELECT LoginEmail, ID FROM safe_workers 
    UNION 
    SELECT LoginEmail, ID FROM safe_companies 
    UNION 
    SELECT LoginEmail, ID FROM safe_customers 
) AS a 
WHERE a.LoginEmail = 'InEmail' AND a.LoginPass= 'InPass'; 

Однако это может вызвать все виды плохого.

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