2016-10-13 8 views
0

У меня есть две таблицы MySQL, из которых я не могу получить объединенные результаты.Присоединиться к двум таблицам MySQL

Первый раз список компаний и их названия:

companies: 
____________________________ 
companyid | companyname | 
1    comp1 
2    comp2 

Второй список ролей пользователей:

roles: 
_____________________________________________________ 
roleid | uid | role | companyid | suspended | 
1   1  dir   1   0 
2   1  manag   2   0 

Я хочу, чтобы получить результат, который будет выглядеть как:

_______________________ 
companyname | role | 
comp1   dir 
comp2   manag 

Мой запрос ниже не возвращает ничего ...

SELECT companies.companyid, roles.role FROM companies INNER JOIN roles ON roles.companyid=companies.companyname where (uid = 1 and suspended = 0) 

ответ

1

Проверьте вы соединяющее состояние.

Попробуйте это,

select a.companyname,b.role from companies a, roles b 
    where a.companyid=b.companyid and 
    (b.uid = 1 and 
    b.suspended <> 0); 
+0

Спасибо, он ничего не возвращает :( – RWS

+1

он не вернется измените последнее условие b.supended <> 0 на b.suspended = 0 – Pirate

+0

* facepalm.jpg * gosh, im настолько глупо, что я действительно имел в виду, что приостановлено должно быть равно нулю. – RWS

1

Вы присоединились к role.companyid = companies.companyname, что неверно, поскольку companyname - это строка, а не целое число.

Попробуйте вместо этого:

SELECT companies.companyid, roles.role FROM companies INNER JOIN roles ON roles.companyid=companies.companyid where (uid = 1 and suspended <> 0); 
+0

Пожалуйста, обратите внимание, вы упускаете ');' в конце строки. Запрос возвращает null :( – RWS

+0

Все еще ничего, несмотря на то, что я сделал suspended = 0 вместо этого приостановлено <> 0, во всяком случае, другие решения отлично работают. Спасибо в любом случае – RWS

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