Je ne suis pas sûr que ce soit la bonne façon de procéder, mais je vais vous expliquer la situation.SQL - Croix Rejoindre lorsque la jointure gauche n'est pas atteinte
J'ai deux tables, la première table est une liste de produits tandis que la seconde est une liste de canaux. Je veux faire un LEFT JOIN si la condition de jointure est rencontrée sinon je veux exploser les rangées pour chaque canal dans la table CHANNEL. J'ai lu à propos de CROSS JOINs mais je ne sais pas si c'est le chemin à parcourir.
SELECT P.PRODUCT_ID, C.CHANNEL, C.REGION, C.COUNTRY, C.LANGUAGE FROM PRODUCT P LEFT JOIN CHANNEL C ON C.CHANNEL = P.CHANNEL;
Tableau de produit
Product_ID | Product_Name | Channel
------------------------------------
12345678 | Product1 | Ecommerce
87654321 | Product2 |
14785236 | Product3 | Outlet
canal Tableau
CHANNEL | REGION | COUNTRY | LANGUAGE
--------------------------------------
Ecommerce | Americas | Canada | EN
Ecommerce | Americas | Canada | FR
Outlet | Americas | Canada | EN
Outlet | Americas | Canada | FR
[...]
Je me attends à cette sortie:
PRODUCT_ID | CHANNEL | REGION | COUNTRY | LANGUAGE
---------------------------------------------------
12345678 | Ecommerce | Americas | Canada | EN
12345678 | Ecommerce | Americas | Canada | FR
87654321 | Ecommerce | Americas | Canada | EN
87654321 | Ecommerce | Americas | Canada | FR
87654321 | Outlet | Americas | Canada | EN
87654321 | Outlet | Americas | Canada | FR
[...]
14785236 | Outlet | Americas | Canada | EN
14785236 | Outlet | Americas | Canada | FR
Je travaille dans une base de données Oracle.
Le conseil apprécierait beaucoup pour cela.
Quel SGBD utilisez-vous? –
'sinon je veux exploser les lignes pour chaque canal de la table CHANNEL' - qu'est-ce que cela signifie? – TheUknown
Pouvez-vous poster un exemple de données et un exemple de résultat souhaité? –