2017-04-17 2 views
0

J'ai besoin d'aide. Je table QurumComment faire exploser une ligne avec des ID différents?

qurum table    data table 
qurum_id|qurum   id|qurum1 
     1|one    1|3 
     2|two    2|2 
     3|three    3|1 
     4|four    4|7 
     5|five    5|5,6 
     6|six    6|4 
     7|seven    7|5 
where qurum_id = data.qurum1 

Le résultat doit être

qurum_id|qurum|qurum1 
     1|one |3 
     2|two |2 
     3|three|1 
     4|four |7 
     5|five |5 
    **6|six |6 
     6|six |4** 
     7|seven|5 

Ceci est la requête

`SELECT qurum_id, qurum,qurum1, 
     SUM(CASE WHEN DATE_FORMAT(aa.input_date, '%m') BETWEEN 01 AND 06 
      THEN 1 END) AS I, 
     SUM(CASE WHEN DATE_FORMAT(aa.input_date, '%m') BETWEEN 07 AND 12 
      THEN 1 END) AS II 
FROM qurum AS qur 
INNER JOIN (SELECT id, qurum1,input_date FROM DATA) AS aa 
      ON qur.qurum_id = aa.qurum1 
WHERE DATE_FORMAT(aa.input_date, '%Y') = $year 
GROUP BY qurum_id 
ORDER BY qurum_id` 

Le résultat est here

Il est le sixième rang avec qurum1 = 6 | 7 dans la table, mais j'ai besoin d'exploser 6 | 7 car qurum_id 6 et qurum_id 7 ont des qurum différents. Pic sera le meilleur show ce que je veux dire

Répondre

0
SELECT SUBSTRING_INDEX(qurum1, ' ', 1) AS first_part, 
SUBSTRING_INDEX(qurum1, ' ', -1) as second_part FROM qurum; 
+0

'SELECT qurum_id, Qurum, qurum1, SUM (CAS QUAND DATE_FORMAT (aa.input_date, '% m') ENTRE 01 ET 06 \t \t ALORS FIN 1) AS I, SUM (CAS QUAND DATE_FORMAT (aa.input_date, '% m') ENTRE 07 ET 12 \t \t ALORS 1 FIN) AS II, SUBSTRING_INDEX (qurum1, '|', 1) première_partie, SUBSTRING_INDEX (qurum1, '|', -1) en tant que second_part FROM qurum AS qur INNER JOIN (SELECT ID, qurum1, date_entrée FROM DATA) AS aa \t \t \t SUR qur.qurum_id = aa.qurum1 OÙ DATE_FORMAT (aa.input_date, '% Y') = 2017 GROUPE PAR qurum_id ORDER BY qurum_id' Vous aimez? –

+0

http://chat.stackoverflow.com/rooms/141896/mysql-explode –

+0

J'ai ajouté un chiffre de plus à qurum1 (maintenant il est 1 | 6 | 7) et la ligne a disparu –