2016-05-31 9 views
0

ich einen Blick in MySQL Workbench erschaffe:MySQL-Ansicht mit Komma getrennt Ergebnis

Tables:

enter image description here

Ich möchte eine Ansicht erstellen, die Datensätze in einem solchen zurückkehren Weg, wo bekomme ich alle Zeilen von AdresseBook Tabelle & Datenfeld Werte durch Komma getrennt von AdresseBookData Tabelle.

Wie geht das?

Meine Ansicht ist, wie folgt aus:

CREATE VIEW `addressBook_view` AS 
SELECT 
    `addressBook`.*, 
    (SELECT `addressBookData`.`data` FROM `addressBookData` WHERE `addressBook_id` = `id` AND `type` = 'mobile') AS `mobile`, 
    (SELECT `addressBookData`.`data` FROM `addressBookData` WHERE `addressBook_id` = `id` AND `type` = 'phone') AS `phone`, 
    (SELECT `addressBookData`.`data` FROM `addressBookData` WHERE `addressBook_id` = `id` AND `type` = 'fax') AS `fax` 
FROM 
    `addressBook` 
+0

Warum wollen Sie einen Blick * *? – Strawberry

+0

Ich erstelle MySQL View, weil ich nicht mehrere Abfragen in PHP ausführen möchte – Punit

+0

Entschuldigung. Die Logik dieser Aussage entgeht mir. – Strawberry

Antwort

1

so etwas wie dieses Versuchen:

SELECT ab.*, abd.type, GROUP_CONCAT(abd.data SEPARATOR ',') 
FROM addressBook ab 
LEFT JOIN addressBookData abd ON ab.id = abd.addressBook_id 
GROUP BY ab.id, abd.type 

Sie Ansicht auf der Grundlage dieser Abfrage selbst erstellen können.

+0

Danke für GROUP_CONCAT – Punit

0

dies am Ende tun:

CREATE VIEW `addressBook_view` AS 
SELECT 
    `addressBook`.* 
    (SELECT GROUP_CONCAT(`data`) FROM `addressBookData` WHERE `addressBook_id` = `addressBook`.`id` AND `type` = 'mobile' GROUP BY `id`) AS `mobile`, 
    (SELECT GROUP_CONCAT(`data`) FROM `addressBookData` WHERE `addressBook_id` = `addressBook`.`id` AND `type` = 'phone' GROUP BY `id`) AS `phone`, 
    (SELECT GROUP_CONCAT(`data`) FROM `addressBookData` WHERE `addressBook_id` = `addressBook`.`id` AND `type` = 'fax' GROUP BY `id`) AS `fax` 
FROM 
    `addressBook`