Sélectionner des éléments de deux tableaux - Cloud - 8.0

Guide de référence de Talend Data Shaping Language

Version
Cloud
8.0
Language
Français
Product
Talend Cloud
Module
Data Shaping Language
Content
Création et développement
Last publication date
2023-11-23
Créez une requête effectuant une jointure entre deux tableaux et sélectionnant des éléments des deux pour créer la sortie.

Procédure

  1. Créez une clause FROM pour appeler le tableau order et donnez-lui un alias : FROM order AS o.

    Dans l'échantillon fourni, les deux tableaux contiennent un élément nommé custid. Pour appeler ces deux éléments dans la requête, vous avez besoin d'un alias pour chaque tableau. Pour plus d'informations, consultez Utiliser la clause FROM.

  2. Désimbriquez le tableau items depuis order à l'aide de la clauseu UNNEST o.items.
  3. Ajoutez une clause JOIN pour effectuer une jointure entre le tableau customer et le tableau order lorsque la valeur de custid est la même dans les deux tableaux : JOIN customer AS c ON c.custid = o.custid
  4. Créez une clause SELECT pour retourner le nom et la note du client ou de la cliente, le numéro de commande et le numéro de l'élément.
    SELECT {
        c.name,
        c.rating,
        o.orderno,
        itemno,
    }

Résultats

La requête doit ressembler à ceci :
FROM order AS o
UNNEST o.items
JOIN customer AS c ON c.custid = o.custid
SELECT {
    c.name,
    c.rating,
    o.orderno,
    itemno
}
Elle retourne le résultat suivant :
[
	{
		"name": "R. Duvall",
		"rating": 640,
		"orderno": 1001,
		"itemno": 347
	},
	{
		"name": "R. Duvall",
		"rating": 640,
		"orderno": 1001,
		"itemno": 193
	},
	{
		"name": "T. Cruise",
		"rating": 750,
		"orderno": 1002,
		"itemno": 460
	},
	{
		"name": "T. Cruise",
		"rating": 750,
		"orderno": 1002,
		"itemno": 680
	},
	{
		"name": "B. Pitt",
		"rating": null,
		"orderno": 1003,
		"itemno": 120
	},
	{
		"name": "B. Pitt",
		"rating": null,
		"orderno": 1003,
		"itemno": 460
	},
	{
		"name": "J. Roberts",
		"rating": 565,
		"orderno": 1004,
		"itemno": 680
	},
	{
		"name": "J. Roberts",
		"rating": 565,
		"orderno": 1004,
		"itemno": 195
	},
	{
		"name": "T. Hanks",
		"rating": 750,
		"orderno": 1005,
		"itemno": 460
	},
	{
		"name": "T. Hanks",
		"rating": 750,
		"orderno": 1005,
		"itemno": 347
	},
	{
		"name": "T. Hanks",
		"rating": 750,
		"orderno": 1005,
		"itemno": 780
	},
	{
		"name": "T. Hanks",
		"rating": 750,
		"orderno": 1005,
		"itemno": 375
	},
	{
		"name": "R. Duvall",
		"rating": 640,
		"orderno": 1006,
		"itemno": 680
	},
	{
		"name": "R. Duvall",
		"rating": 640,
		"orderno": 1006,
		"itemno": 120
	},
	{
		"name": "R. Duvall",
		"rating": 640,
		"orderno": 1006,
		"itemno": 460
	},
	{
		"name": "T. Cruise",
		"rating": 750,
		"orderno": 1007,
		"itemno": 185
	},
	{
		"name": "T. Cruise",
		"rating": 750,
		"orderno": 1007,
		"itemno": 680
	},
	{
		"name": "T. Cruise",
		"rating": 750,
		"orderno": 1008,
		"itemno": 460
	}
]