Mon SQL-fu est trop faible pour cela, et je ne suis même pas sûr que ce soit possible dans un seul appel SQL.Est-il possible de sélectionner plusieurs comptes conditionnels sur trois tables dans une même requête SQL?
Étant donné que j'ai les tableaux suivants:
PARTNER
+----+--------+
| id | name |
+----+--------+
| 1 | bloggs |
| 2 | jones |
PARTNER MANAGER
+----+--------------+------+
| id | partner_id | name |
+----+--------------+------+
| 1 | 1 | fred |
| 2 | 2 | dave |
COMPANY
+----+--------------------+--------+----------+
| id | partner_manager_id | name | active |
+----+--------------------+--------+----------+
| 1 | 1 | comp1 | true |
| 2 | 1 | comp2 | false |
| 3 | 2 | comp3 | true |
| 4 | 2 | comp4 | true |
| 5 | 2 | comp5 | true |
| 6 | 2 | comp6 | true |
Je voudrais génèrerait les éléments suivants dans un seul appel SQL:
+--------------+--------------------+----------------------+
| partner_name | n_active_companies | n_inactive_companies |
+--------------+--------------------+----------------------+
| bloggs | 1 | 1 |
| jones | 4 | 0 |
je peux rejoindre les trois tables en utilisant deux LEFT JOINs
mais comment Je peux agréger les comptes (avec ou sans la clause WHERE
) m'échappe. Est-ce que j'aboie le mauvais arbre, pour ainsi dire?
je préfère utiliser une vue SQL si vous voulez partir d'un seul statment – Sudantha