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

    [SQL Server] Come unire due colonne di due tabelle differenti senza nessuna relazione

    Quello che voglio fare è relativamente semplice, ma non so come.
    Ho una funzione Split che mi divide una stringa rappresentante liste di valori in una tabella a singola colonna.
    Eseguendola due volte su due stringhe diverse ottengo due tabelle a singola colonna. Ora dovrei unire queste due colonne in un solo risultato, faccio un esempio:
    Tabella1:
    colonna1
    1
    2
    3

    Tabella2:
    colonna2
    A
    B
    C

    Risultato:
    colonna1 colonna2
    1 A
    2 B
    3 C


    Ho fatto varie prove con JOIN o UNION ma non ottengo il risultato sperato.

    Come posso fare?

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    io non ho capito la struttura della stringa originaria
    puoi postare degli esempi di come sono composti i record della tabella e di cosa fai per splittare?

  3. #3
    Per collegarmi al mio esempio due esempi di stringhe sono "1,2,3" e "A,B,C". La funzione Split l'ho trovata in rete e altro non fa che prendere in parametro la stringa e un delimitatore, in questo caso ",". Eseguo due volte la funzione sulle due stringhe e il risultato sono le due tabelle sopra descritte. Quello postato inizialmente è un esempio.
    Ultima modifica di Alexmod20; 16-01-2015 a 15:51

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ma la tabella è fatta così

    |campo1 | campo2|
    |"1,2,3"|"A,B,C"|

    o così

    |campo1 |
    |"1,2,3"|
    |"A,B,C"|

  5. #5
    Ok, forse mi sono spiegato male. Lasciamo perdere lo Split per ora.
    Io ho due tabelle. Ognuna con un campo e con tre record.

    Tabella uno:
    |campo1|
    |1|
    |2|
    |3|


    Tabella due:
    |campo2|
    |A|
    |B|
    |C|

    Ora quello che voglio è unire i due campi. Così
    |campo1|campo2|
    |.....1....|....A....|
    |.....2....|....B....|
    |.....3....|....C....|

    Ovvero una query che mi restituisce una tabella con 2 campi e 3 records.

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    se non esiste correlazione tra i campi
    SELECT a.campo1, b.campo2 FROM Tabella_uno a, Tabella_due b

    se esiste una correlazione tra le tabelle, usa una join sul campo comune

  7. #7
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Devi ancora dirci
    - se ci sono record doppi su una tabella oppure sull'altra
    - se il numero di record delle 2 tabelle corrisponde
    - quale è il criterio per associare il n°esimo record della 1° tabella con il n°esimo record della 2° tabella
    - eccetera

    a parer mio questo si avvicina alla soluzione:
    codice:
    SELECT     
        kkk1.k1a AS t1c1, 
        kkk2.k2a AS t1c2
    FROM         
        (
            SELECT 
                x1.Cam1 AS k1a, 
                COUNT(x2.Cam1) AS k1n
            FROM          
                dbo.Tab1 AS x1 
            LEFT OUTER JOIN
                dbo.Tab1 AS x2 
            ON 
                x1.Cam1 >= x2.Cam1
            GROUP BY 
                x1.Cam1
        ) AS kkk1 
    INNER JOIN
        (
            SELECT     
                y1.Cam2 AS k2a, 
                COUNT(y2.Cam2) AS k2n
            FROM          
                dbo.Tab2 AS y1 
            LEFT OUTER JOIN
                dbo.Tab2 AS y2 
            ON 
                y1.Cam2 >= y2.Cam2
            GROUP BY 
                y1.Cam2
        ) AS kkk2 
    ON 
        kkk1.k1n = kkk2.k2n
    ;
    - Tabella "Tab1" Campo "Cam1" nvarchar
    - Tabella "Tab2" Campo "Cam2" nvarchar




    Facci sapere
    Ultima modifica di nman; 17-01-2015 a 03:20

  8. #8
    se la relazione è il numero del record (1-1, 2-2, 3-3 ecc), puoi ricavare due tabelle temp numerando i record come in questo esempio http://lnx.dicesare.com/sql/sql-nume...d-selezionati/ e poi metterle in join tramite il numero di record

  9. #9
    Vi ringrazio per i vostri suggerimenti. Purtroppo dovrò aspettare per provarli quindi vi farò sapere.

    Devi ancora dirci
    - se ci sono record doppi su una tabella oppure sull'altra
    - se il numero di record delle 2 tabelle corrisponde
    - quale è il criterio per associare il n°esimo record della 1° tabella con il n°esimo record della 2° tabella
    - eccetera
    Le due tabelle sono esattamente come quelle che ho descritto, l'esempio è concreto le due tabelle sono esattamente così, una ha 1,2,3 l'altra A,B,C. Il numero dei records è l'unica cosa che corrisponde, per il resto non ci sono criteri per associare i record. L'unica cosa è che ci sono le due colonne di queste due tabelle e vanno affiancate.
    Facendo un altro esempio è un po' come avere due array monodimensionali e unirli in un array bidimensionale (2 colonne, 3 righe)

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    39
    Potresti fare una cosa del genere(controlla se la sintassi che ho scritto è corretta)

    Insert into tabellaTre(campo1, campo2) Values
    (
    (Select tabUno.campo1 from Tabella_uno tabUno)
    Union
    (Select tabDue.campo2 From Tabella_due tabDue)
    )

    oppure

    Insert into tabellaTre
    (Select tabUno.campo1 from Tabella_uno tabUno)
    Union
    (Select tabDue.campo2 From Tabella_due tabDue)

    Insomma il comando Union di SQL ti unisce due risultati di Select in uno solo, quindi se segui questa strada dovresti riuscirci.

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.