У меня есть две таблицы mysql
user:
|--------------------------------|
| id | name | type | ruser_type |
|--------------------------------|
| 1 | Admin | a | |
| 2 | | r | c |
|--------------------------------|
customer
|-------------------------|
| id | name | user_id |
|-------------------------|
| 1 | Sam | 2 |
|-------------------------|
Если user.type
является 'a' или 's', то егопользователь с правами администратора, имя которого находится в таблице пользователей.
Если user.type
- это «r», а ruser_type
- «c», то это обычный пользователь, имеющий отношение в таблице клиентов, где customer.user_id = user.id
Я хочу запрос, который запускает условное соединение.Если user.type
это 'a' или 's', то имя будет выбрано из пользовательской таблицы.
Если user.type
это 'r' и ruser_type
это 'c', тогда имя будетизвлекается из таблицы клиентов с условием JOIN customer.user_id = user.id
.
. Для этого я написал такой запрос: -
SELECT users.fname as adminFname, customers.fname as customerFname, users.type FROM users
LEFT JOIN customers ON (customers.user_id = users.id AND
(
(users.type = 'r' AND users.ruser_type = 'c')
OR users.type = 'a'
OR users.type = 's'
)
)
WHERE users.id = 1
Есть ли возможность еще больше оптимизировать запрос?
Кроме того, как я могу написать этот запрос, используя Laravel eloquent?