Как объединить две таблицы в PHP - MySQL, которые соответствуют идентификатору во второй таблице и по-прежнему отображают конкретные записи в таблице 1? - PullRequest
1 голос
/ 04 мая 2019

У меня есть две таблицы (учетная запись и ресторан) Как я могу отобразить все записи из двух таблиц, но исключить некоторые записи?

table: account
+-------+----------+------------+
| uid   | name     | role       |
+-------+----------+------------+
|  1    | John     | Admin      |
|  2    | Steve    | Resto_Owner|
|  3    | Bill     | Customer   |
+-------+----------+------------+

table: restaurant
+--------+----------+------------+
|resto_id|  uid     | resto_name |
+--------+----------+------------+
|  1     |   2      |Steve Resto |
+--------+----------+------------+


**This is my Desired Output:** 
+-------+----------+------------+--------------+
| uid   | name     | role       | resto_name   |
+-------+----------+------------+--------------+
|  1    | John     | Admin      |              |
|  2    | Steve    | Resto_Owner| Steve Resto  |
+-------+----------+------------+--------------+

Я хочу отображать записи из этих двух таблиц с рольюadmin и resto_owner.Но также отображать имя_ставки, если роль - имя_ставщика, пустое, если администратор, и не отображать, если клиент

Я пытался использовать INNER JOIN, но отображалось только: 2 Стив Resto_Owner Стив Resto и НЕ отображает запись администратора:

Заранее благодарен:)

1 Ответ

0 голосов
/ 04 мая 2019

Использовать левое соединение с условиями

 SELECT account_table.uid, account_table.name, account_table.role, restaurant_table.resto_name 
    FROM account account_table LEFT JOIN restaurant restaurant_table
    ON restaurant_table.uid = account_table.uid 
    WHERE account_table.role <> 'Customer' ORDER BY account_table.uid ASC

Подробнее https://www.w3schools.com/sql/sql_join_left.asp

...