Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    35

    [SQL] problema di concatenamento stringhe

    Ciao a tutti!
    Dovrei creare su Sql Server una vista che selezioni dalla tabella TITOLI la colonna title_id e dalla tabella AUTORI la colonna au_id presenti in un database riguardante dei libri.
    Il problema è che alcuni titoli presentano più autori...

    Con questa query infatti si nota che:

    SELECT dbo.titles.title_id, dbo.authors.au_id
    FROM dbo.authors INNER JOIN
    dbo.titleauthor ON dbo.authors.au_id = dbo.titleauthor.au_id INNER JOIN
    dbo.titles ON dbo.titleauthor.title_id = dbo.titles.title_id
    ORDER BY dbo.titles.title_id

    TABELLA:

    title_id au_id
    1 || 40975
    1 || 22321
    1 || 15712


    Ora facendo questa query trovo una vista che mi da il numero di autori per ogni titolo:

    SELECT dbo.titles.title_id, COUNT(dbo.authors.au_id) AS Expr1
    FROM dbo.authors INNER JOIN
    dbo.titleauthor ON dbo.authors.au_id = dbo.titleauthor.au_id INNER JOIN
    dbo.titles ON dbo.titleauthor.title_id = dbo.titles.title_id
    GROUP BY dbo.titles.title_id

    TABELLA:

    title_id Expr1
    1 || 3
    2 || 2
    3 || 2
    4 || 3


    Il mio obiettivo però sarebbe quello di riuscire a concatenare le stringhe di au_id degli autori che hanno scritto lo stesso libro per fare una tabella di questo tipo:

    title_id Expr1
    1 || au_id(Iautore)-au_id(II autore)-au_id(III autore)
    2 || au_id(Iautore)-au_id(II autore)
    3 || au_id(Iautore)-au_id(II autore)
    4 || au_id(Iautore)-au_id(II autore)-au_id(III autore)

    come posso fare?!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    Pochi sono i DB che consentono funzionalità evolute di trasposizione dei dati.
    La cosa è possibile se il numero delle righe da trasporre è finito e noto (giocando con union varie, ad es.), altrimenti le soluzioni abbozzate sono sempre dei workaround.

    Ti consiglio di fare una ricerca con una chiave del tipo "SQL Server Transpose"
    ciao
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    30
    se usi mysql c'è la funzione di aggregazione GROUP_CONCAT da usare con GROUP BY. per gli altri db non saprei, dovresti cercare e eventualmente scrivere la funzione tu.

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.