/ / GROUP_CONCAT mysql स्टेटमेंट त्रुटि - mysql, sql, concat, group-concat

GROUP_CONCAT mysql कथन त्रुटि - mysql, sql, concat, group-concat

मैं के लिए mysql मजबूती की कोशिश की है स्तंभ के लिए गतिशील रूप से पंक्तियाँ इसके बाद यहाँ क्वेरी विवरण के साथ:

SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
"MAX(CASE WHEN col = """,
col,
""" THEN val END) as `",
col, "`"
)
)INTO @sql
FROM
(
SELECT A.id_a, D.id_c id_c,
C.students students,
CONCAT(B.`code`, "_", A.id_a) col,
CONCAT(D.value_m, ",", D.value_n) val
FROM table_a A
INNER JOIN table_d D ON A.id_a =D.id_a
INNER JOIN table_b B ON D.id_b=B.id_b
INNER JOIN table_c C ON D.id_c=C.id_c
)dd;

SET @sql = CONCAT("SELECT id_c, students,", @sql, "
FROM(
SELECT A.id_a, D.id_c id_c,
C.students students,
CONCAT(B.`code`, "_", A.id_a) col,
CONCAT(D.value_m, ",", D.value_n) val
FROM table_a A
INNER JOIN table_d D ON A.id_a =D.id_a
INNER JOIN table_b B ON D.id_b=B.id_b
INNER JOIN table_c C ON D.id_c=C.id_c
)dd
GROUP BY id_c"
);

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

परिणाम संदेश के साथ:

Query OK, 0 rows affected
Query OK, 1 row affected
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "", A.id_a) col,
CONCAT(D.value_m, ",", D.value_n) val
FROM table_a A    " at line 1
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "MAX(CASE WHEN col = "MAT_1" THEN val END) as `MAT_1`,MAX(CASE WHEN col = "BIO_1"" at line 1
1243 - Unknown prepared statement handler (stmt) given to EXECUTE
1243 - Unknown prepared statement handler (stmt) given to DEALLOCATE PREPARE

मैं इस तरह sql बयान से परिचित नहीं हूँ, और उस SQL ​​QUERY के साथ क्या गलत है

धन्यवाद...

उत्तर:

उत्तर № 1 के लिए 1

यदि आप अपना कोड देखते हैं (और ज़ूम इन):

SET @sql = CONCAT("SELECT id_c, students,", @sql, "
[..]
CONCAT(B.`code`, "_", A.id_a) col,
CONCAT(D.value_m, ",", D.value_n) val
[..]
GROUP BY id_c"
);

आप देखेंगे कि _ तथा , काले होते हैं, जबकि उन्हें स्ट्रिंग के भाग के रूप में लाल होना चाहिए। इसका मतलब है कि आपकी स्ट्रिंग वहाँ "टूटी हुई" नहीं है। तो आप के साथ एकल उद्धरण से बचने की जरूरत है "":

SET @sql = CONCAT("SELECT id_c, students,", @sql, "
[..]
CONCAT(B.`code`, ""_"", A.id_a) col,
CONCAT(D.value_m, "","", D.value_n) val
[..]
GROUP BY id_c"
);

या एकल उद्धरण वाले स्ट्रिंग्स के लिए दोहरे उद्धरण चिह्नों का उपयोग करें:

SET @sql = CONCAT("SELECT id_c, students,", @sql, "
[..]
CONCAT(B.`code`, "_", A.id_a) col,
CONCAT(D.value_m, ",", D.value_n) val
[..]
GROUP BY id_c"
);

अब पूरा स्ट्रिंग लाल है क्योंकि यह होना चाहिए :-)

http://rextester.com/SLMU41976