shipping_customer
стол:Избегайте дополнительного подзадача в этом запросе UNION?
+----+---------------+---------------------+
| id | business_name | billing_customer_id |
+----+---------------+---------------------+
| 1 | Soylent Corp | 3 |
| 2 | Initech | 4 |
+----+---------------+---------------------+
billing_customer
стол:
+----+--------------------+
| id | business_name |
+----+--------------------+
| 3 | Acme Corporation |
| 4 | Globex Corporation |
+----+--------------------+
Идентификаторы являются уникальными среди двух таблиц. Wanted выход каждого клиента (если перевозка груза, выберите также платящего клиента) с id IN (1, 4)
:
+-------------+--------------------+----------+
| id | business_name | type |
+-------------+--------------------+----------+
| 1 | Soylent Corp | shipping |
| 3 | Acme Corporation | billing | <- 1 has billing_customer = 3
| 4 | Globex Corporation | billing |
+-------------+--------------------+----------+
Есть ли способ, чтобы избежать подзапрос?
SELECT id, business_name, 'shipping' AS type
FROM shipping_customer
WHERE id IN (1, 4)
UNION
SELECT id, business_name, 'billing' AS type
FROM billing_customer
WHERE
id IN (1, 4) OR
id IN (SELECT billing_customer_id from shipping_customer WHERE id IN (1, 4))
Что RDBMS вы используете? –
Sybaseiq и старая версия тоже. – gremo