Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [MS SQL] Split valori id in una select

    Ciao a tutti, devo creare istruzioni di select, update e insert su una tabella in cui un campo è una lista di ID, come faccio a splittarli?

    Quindi se il mio campo Lista_Giocatori della tabella Utenti è formato da questi valori 1, 2, 3, 4, 5, 6 devo fare una select che tiri fuori tutte le righe con questi ID in un altra tabella.

    es.
    Tabella Utenti
    _______________________
    Nome testo
    Cognome testo
    Lista_Giocatori 1,2,3,4,5,6


    es.
    Tabella Giocatori
    ____________________
    Nome Cristiano
    Cognome Ronaldo
    Id_Giocatore 6

    Come tiro fuori tutti i giocatori di quell'utente?

    Grazie

  2. #2

  3. #3
    Originariamente inviato da optime
    ... WHERE id IN (lista)
    Il problema è che per lui (lista) è un campo unico Lista_Giocatori (presumo stringa) che andrebbe splittato sulla virgola.

    In realtà è proprio come hai strutturato il DB che è sbagliato:
    - se un giocatore può essere solo di un utente, basta che elimini il campo Lista_Giocatori e metti una chiave esterna idUtente nella Tabella Giocatori.
    - se un giocatore può essere di più utenti, devi creare una tabella Utenti-Giocatori
    [key, idUtente, idGiocatore]

    Se non puoi ristrutturare il DB, e se Lista_Giocatori è una stringa, non puoi farlo semplicementi in SQL.

  4. #4

  5. #5
    Grande optime! Grazie mille!

  6. #6
    Scusa altra domanda, quando passo la lista dei valori all'istruzione, ovviamente si tratta di una stringa @Giocatori, ma mi dice che non riesce a fare la conversione i Int32

    Select * from Giocatori where Id_Giocatore IN (@Giocatori)

    Come posso evitare questo?

  7. #7
    ma non hai fatto come era scritto nell'articolo?

  8. #8
    Ora non mi da più l'errore ma non gira sto controllando.


    CREATE PROCEDURE dbo.StoredProcedure2

    AS
    BEGIN
    Declare @Giocatori varchar(MAX)
    SET @Giocatori = LTRIM(RTRIM(@Giocatori))+ ','
    SELECT

    *

    FROM

    Giocatori

    WHERE

    Id_Giocatore IN (@Giocatori)

    END

  9. #9
    la soluzione è nell'articolo (e 3)

  10. #10
    lo so peccato che mi sfugge!

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.