...two views. According to the following SQL statement(see below) I'm going to create a table 'A' storing student's name, table 'B' storing courses and table D storing cards. Furthermore, it creates two pivot tables A2B and A2D to refer courses and cards. I'd like to query the DB to get that result:
1|John|Doe|Italian, Spanish|12345 2|Paul|Smith|English, Italian|12345, 13579 using the views aTest and dTest it returns: --aTest 1|John|Doe|Italian, Spanish 2|Paul|Smith|English, Italian and --dTest 1|John|Doe|12345 2|Paul|Smith|12345, 13579 but the vTest view doesn't return the right result: 1|John|Doe|Italian, Spanish|12345, 12345 2|Paul|Smith|English, English, Italian, Italian|12345, 13579, 12345, 13579 so could you suggest an SQL solution? Thanks in advance, Danilo -- START SQL FILE CREATE TABLE A ( a_id INTEGER PRIMARY KEY NOT NULL, a_name TEXT, a_last TEXT); CREATE TABLE A2B ( a2b_id INTEGER PRIMARY KEY NOT NULL, a2b_ref_a INTEGER, a2b_ref_b INTEGER); CREATE TABLE B ( b_id INTEGER PRIMARY KEY NOT NULL, b_course TEXT); CREATE TABLE A2D ( a2d_id INTEGER PRIMARY KEY NOT NULL, a2d_ref_a INTEGER, a2d_ref_d INTEGER); CREATE TABLE D ( d_id INTEGER PRIMARY KEY NOT NULL, d_card TEXT); INSERT INTO A VALUES(1,'John','Doe'); INSERT INTO A VALUES(2,'Paul','Smith'); INSERT INTO B VALUES(1,'English'); INSERT INTO B VALUES(2,'Italian'); INSERT INTO B VALUES(3,'Spanish'); INSERT INTO A2B VALUES(1,1,2); INSERT INTO A2B VALUES(2,1,3); INSERT INTO A2B VALUES(3,2,1); INSERT INTO A2B VALUES(4,2,2); INSERT INTO D VALUES(1,'12345'); INSERT INTO D VALUES(2,'67890'); INSERT INTO D VALUES(3,'13579'); INSERT INTO A2D VALUES(1,1,1); INSERT INTO A2D VALUES(2,2,1); INSERT INTO A2D VALUES(3,2,3); CREATE VIEW aTest AS SELECT A.*, group_concat(b_course, ', ') FROM A LEFT OUTER JOIN A2B ON a_id = a2b_ref_a INNER JOIN B ON a2b_ref_b = b_id GROUP BY a_id; CREATE VIEW dTest AS SELECT A.*, group_concat(d_card, ', ') FROM A LEFT OUTER JOIN A2D ON a_id = a2d_ref_a INNER JOIN D ON a2d_ref_d = d_id GROUP BY a_id; CREATE VIEW vTest AS SELECT A.*, group_concat(b_course, ', '), group_concat(d_card, ', ') FROM A LEFT OUTER JOIN A2B ON a_id = a2b_ref_a INNER JOIN B ON a2b_ref_b = b_id LEFT OUTER JOIN A2D ON a_id = a2d_ref_a INNER JOIN D ON a2d_ref_d = d_id GROUP BY a_id; -- END _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users