Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [mysql] concatenare record

    Avrei bisogno di risolvere questo problema,

    ho 2 tabelle, la prima (tabella1):
    id, testo, gruppo

    seconda (tabella2):
    id1 -> fktabella1_id
    idGruppo -> fktabella2_id

    questa è la mia query all'incirca che dovrei fare
    SELECT
    c.`id`,
    c.`Testo`,
    CONCAT(',', c.`Testo`) AS ciccio
    FROM (SELECT * FROM `tabella1` WHERE `Gruppo` = 'no') AS c
    INNER JOIN `tabella2` AS cc
    ON c.`id` = cc.`id`
    INNER JOIN `tabella1` AS g
    ON cc.`idGruppo` = g.`id`
    GROUP BY c.`id`

    sostanzialmente è una tabella con una relazione molti a molti a se stessa (adesso mi menano xD)
    però avrei bisogno che il campo 'ciccio' concatenasse tutti i record trovati.

    è una cosa complessa? ho altre strade, magari meno ingarbugliate?

    intanto ringrazio per le risposte

  2. #2
    ho capito poco della tua richiesta, ma sicuramente per colpa mia.

    Prova ad usare concat_ws() al posto di concat().


    http://dev.mysql.com/doc/refman/5.0/...tion_concat-ws

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    no va beh.. quello ok
    ma così la query come è ora mi restituisce questa risposta

    (SELECT * FROM `tabella1` WHERE `Gruppo` = 'no')
    mi restituisce un'insieme di righe che non sono gruppi

    INNER JOIN `tabella2` AS cc ON c.`id` = cc.`id`
    prima join sulla tabella di relazione

    INNER JOIN `tabella1` AS g ON cc.`idGruppo` = g.`id`
    seconda join sulla tabella principale

    GROUP BY c.`id`
    pensavo che con questa avrei eliminato le ripetizioni dei record secondo l'id ma che CONCAT_WS(',', c.`Testo`) AS ciccio sarei riuscito a prendere ugualmente tutte le occorrenze di c.`Testo` che avessere lo stesso c.`id`

    Ora mi spiego meglio
    Tabella1:
    id Testo Gruppo
    1 blabla no
    2 blibli si
    3 blublu si

    Tabella2:
    id1 idGruppo
    1 2
    1 3

    se la query fosse così mi viene restituito questo risultato
    SELECT
    c.`id`,
    c.`Testo`,
    g.`id`
    g.`Testo` as Ciccio // Questa era sbagliata nella precedente query scusate..
    FROM (SELECT * FROM `tabella1` WHERE `Gruppo` = 'no') AS c
    INNER JOIN `tabella2` AS cc
    ON c.`id` = cc.`id`
    INNER JOIN `tabella1` AS g
    ON cc.`idGruppo` = g.`id`

    Risultato:
    c.id c.testo g.id Ciccio
    1 blabla 2 blibli
    1 blabla 3 blublu

    ma io vorrei una cosa del genere
    c.id c.testo Ciccio1 Ciccio2 Ciccio3 ecc..
    1 blabla blibli blublu

    oppure mi va bene anche
    c.id c.testo Ciccio
    1 blabla blibli,blublu (la famosa CONCAT)

    spero di essere stato più chiaro e di non essermi dilungato troppo :S

    intanto ringrazio per la risposta

  4. #4

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    funzionissima
    thankiu so much

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.