Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Unterabfrage, die mehr als eine Zeile zurückgibt

Ich glaube nicht, dass es möglich ist, ein Array innerhalb einer Zeile zurückzugeben, aber Sie können group_concat verwenden um die Werte zu einer Zeichenfolge zu verbinden, die Sie später auflösen können:

SELECT `customers`.`First Name`, `customers`.`Last Name`,
GROUP_CONCAT(`items`.`Product Name` SEPARATOR '$^$') AS `Products` 
FROM customers 
JOIN items 
ON `customers`.`Customer No` = `items`.`Customer No` 
WHERE `customers`.`Customer No` = 6 
GROUP BY `Customer No`

$products=explode("$^$",$result[0]['products']);

Das Standardtrennzeichen für group_concat ist , was bei Verwendung von explode ziemlich gefährlich sein kann, also verwenden wir SEPARATOR '$^$' um ein paar zufällige Zeichen hinzuzufügen, die wahrscheinlich nicht auftauchen.