Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Unindo tabelas no MySql com um campo comum, mas valores diferentes para o campo comum


Você deve ter uma tabela que contenha as seguintes colunas:

id (único, primário), nome de usuário, senha, função (INT, seria atribuído de 1 a 3 para principal, equipe ou corres, dependendo do usuário)

Além disso

Você pode ter outra tabela chamada roles se quiser configurar assim:

id (único, primário), título (as opções de título seriam principal, staff ou corres)

Quando o usuário fizer login, faça algo como
if($role == 1){
// redirect to principal page
}
elseif($role == 2){
// redirect to staff page
}
elseif($role == 3){
// redirect to corres page
}

Não tenho certeza, mas acredito que isso funcionaria também. Tente esta consulta.
(SELECT '1' AS role FROM table1 WHERE username = $username AND password = $password)
UNION ALL
(SELECT '2' AS role FROM table2 WHERE username = $username AND password = $password)
UNION ALL
(SELECT '3' AS role FROM table3 WHERE username = $username AND password = $password)

Supondo que o usuário esteja localizado apenas em UMA dessas três tabelas, ele deve corresponder ao nome de usuário e à senha e descobrir de qual tabela o usuário está vindo. Então você pode retirar a função usando
$role = $row['role'];

Se a combinação de nome de usuário/senha estiver incorreta então $role estaria vazio ou você poderia buscar o número de linhas [usando $iscorrectuser =mysql_num_rows($query)] onde há uma correspondência e o número de linhas seria 0. Você poderia então redirecionar o usuário que está tentando fazer login com uma mensagem de erro "Login sem sucesso".