2
我的問題是關於獲取屬性的多個值到一個字符串,而不重複主要行。MySQL查詢連接超過1個相關表
我將用一個簡單的例子,試圖解釋我的問題:
實體 - 關係圖
用,例如,下面的數據:
我想要在字段中使用Property_1的串聯來獲取「TABLE」的某些元素,並且可以使用con Property_2在另一個領域中的聯繫。數據庫結構/數據
1 Row1 "P1_1, P1_2" "P2_1, P2_2"
4 Row4 "P1_3" "P2_3"
例:
CREATE TABLE table1(
id INT AUTO_INCREMENT,
value VARCHAR(10),
PRIMARY KEY(id)
) ENGINE=INNODB DEFAULT CHARSET=latin1;
CREATE TABLE property_1(
id INT AUTO_INCREMENT,
value VARCHAR(10),
table1 INT,
PRIMARY KEY(id),
FOREIGN KEY (table1) REFERENCES table1(id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=latin1;
CREATE TABLE property_2(
id INT AUTO_INCREMENT,
value VARCHAR(10),
table1 INT,
PRIMARY KEY(id),
FOREIGN KEY (table1) REFERENCES table1(id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=latin1;
INSERT INTO table1 (value) VALUES
('Row1'),('Row2'),('Row3'),('Row4'),('Row5'),('Row6');
INSERT INTO property_1 (value, table1) VALUES
('P1_1', 1), ('P1_2', 1), ('P1_3', 4), ('P1_4', 6);
INSERT INTO property_2 (value, table1) VALUES
('P2_1', 1), ('P2_2', 1), ('P2_3', 4), ('P2_4', 5);
但是,它永遠不會複製該得到ROW1和ROW4應該像「TABLE」
例如,查詢行是非常重要的
我已經tryed一些查詢:
SELECT t.*, GROUP_CONCAT(p1.value), GROUP_CONCAT(p2.value)
FROM table1 t
LEFT JOIN property_1 p1 ON p1.table1=t.id
LEFT JOIN property_2 p2 ON p2.table1=t.id
WHERE t.id IN (1,4)
GROUP BY t.id;
但結果是在適當的重複值ty_1和property_2字符串。
所以:
如何得到表1的重複行及其屬性的字符串連接起來?
它似乎工作,謝謝你! –
@AdrianMaire:不客氣! –