Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Fra
    Registrato dal
    Oct 1999
    Messaggi
    221

    [SQL] : Concatenare Stringhe di un raggruppamento

    Ciao.
    Ho bisogno di una mano!

    Ho 3 tabelle Tesi , Docenti e [Tesi dei docenti].
    Ogni Docente può essere relatore di + tesi ed ogni tesi può essere relazionata da + docenti.

    Effettuo una QUERY per sapere per ogni tesi i docenti relatori :

    [SELECT Tesi.Nome, Docenti.Nome FROM Tesi INNER JOIN (Docenti INNER JOIN Tesi_dei_Docenti ON Docenti.Id_docente = Tesi_dei_Docenti.Id_Docente) ON Tesi.Id_Tesi = Tesi_dei_Docenti.Id_Tesi GROUP BY Tesi.Nome, Docenti.Nome

    Il risultato di questa query non mi soddisfa perchè fa comparire tante volte una stessa tesi per quanti sono i docenti relatori.
    Ad esempio :

    Nome tesi | Docenti relatori
    TESI 1 | Prof. Lippo Lippi
    TESI 2 | Prof.essa Cippa Lippa
    TESI 2 | Prof. Ciccio Cappuccio

    INVECE IO VORREI
    TESI 1 | Prof. Lippo Lippi
    TESI 2 | Prof.essa Cippa Lippa, Prof. Ciccio Cappuccio

    Come posso fare ? Esiste qualche funzione di aggregazione ? (per i numeri è così semplice, .... e per il testo ?)

    Grazie....Auz!
    SO : Windows XP - Linux Gentoo
    Java - Visual Basic - C++

  2. #2
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    Il tuo non è un problema di query......ma si routine per risolvere il tuo problema.

    nr=0
    'Crea una matrice bidimensionale tipo:
    dim prof (10,100) as string
    'dove 10 sono le tesi e 100 sono i docenti
    se la query trova delle corrispondenze allora immetti il docente e la sua tesi in matrice
    alla fine prima dell'output dei risultati

    fai tre cicli for ed elimini i doppioni formattando il tutto per l'output dei risultati

    esempio:
    for t=1 to 10
    for b0=1 to 100
    if prof(t,b0)="" then goto avanti
    for b1=b0+1 to 100
    if prof(t,b0)=prof(t,b1) then prof(t,b1)=""
    next b1
    next b0
    avanti:
    next t

    ......quì pio ti formatti l'output dei risultati......
    for t=1 to 10
    for b0=1 to 100
    if prof(t,b0)="" then nostampa
    stampi........prof(t,b0)
    TESI 1 | Prof. Lippo Lippi
    TESI 2 | Prof.essa Cippa Lippa, Prof. Ciccio Cappuccio

    nostampa:

    ecc,ecc.


    link
    homepage
    http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/
    software
    http://%77%77%77%2e%74%77%6f%72%6b%2...programmi.html
    forum
    http://%77%77%77%2e%74%77%6f%72%6b%2...um/default.asp

  3. #3
    Utente di HTML.it L'avatar di Fra
    Registrato dal
    Oct 1999
    Messaggi
    221
    Ok, steno. La tua soluzione va bene nel caso in cui PROPRIO NON ESISTA un modo per ragguppare i docenti in uno stesso campo (questo mi renderebbe tutto più semplice).

    Quindi tu dici che non si può fare direttamente in SQL ?
    SO : Windows XP - Linux Gentoo
    Java - Visual Basic - C++

  4. #4
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    Non avevo visto [SQL]

    .....il mio è un suggerimento in vb
    in sql non sò

  5. #5
    Utente di HTML.it L'avatar di Fra
    Registrato dal
    Oct 1999
    Messaggi
    221
    Qualcuno sa se si può fare in SQL ?
    SO : Windows XP - Linux Gentoo
    Java - Visual Basic - C++

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    non si può fare perchè sono due record con due campi separati.

    Potresti crearti una nuova tabella che ti raggruppi i nomi dei relatori sotto un unico record riguardante la stessa tesi

  7. #7
    Utente di HTML.it L'avatar di Fra
    Registrato dal
    Oct 1999
    Messaggi
    221
    Mi potresti fare un esempio (una volta che ti crei questa tabella temporanea non ritorniamo nello stesso problema di prima ?)
    SO : Windows XP - Linux Gentoo
    Java - Visual Basic - C++

  8. #8
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    se per esempio fai la tabella con 2 campi : TESI e DOCENTI, quando ti leggi i dati, li vai a scrivere nella nuova tabella creando un solo record per la tesi2 che abbia come docenti il docente 1 e il docente 2.

  9. #9
    Utente di HTML.it L'avatar di Fra
    Registrato dal
    Oct 1999
    Messaggi
    221

    Scusa ma continuo a non capire

    Mi è chairo ciò che dici, ma come faccio a scrivere due record (o più) in uno stesso campo (IN SQL) ?
    SO : Windows XP - Linux Gentoo
    Java - Visual Basic - C++

  10. #10
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    scusami, fmmi capire :gren: :

    devi realizzare una stored procedure o cmq un comando direttamente sul DB SQL o devi lavorare i dati da programma?

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.