+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Select su più tabelle

  1. #1
    Nottambulo non è in linea Scolaretto
    Luogo
    Campione d'Italia
    Post
    321

    Select su più tabelle

    Ciao, ho 3 tabelle, una è la classica tabella utenti di asp.net, una con una lista nomi e infina una dove riporto le selezioni dell'utente sui nomi.

    Tabelle:

    codice:
    CREATE TABLE [dbo].[AspNetUsers] (
        [Id]                   NVARCHAR (128) NOT NULL,
        [Email]                NVARCHAR (256) NULL,
        [EmailConfirmed]       BIT            NOT NULL,
        [PasswordHash]         NVARCHAR (MAX) NULL,
        [SecurityStamp]        NVARCHAR (MAX) NULL,
        [PhoneNumber]          NVARCHAR (MAX) NULL,
        [PhoneNumberConfirmed] BIT            NOT NULL,
        [TwoFactorEnabled]     BIT            NOT NULL,
        [LockoutEndDateUtc]    DATETIME       NULL,
        [LockoutEnabled]       BIT            NOT NULL,
        [AccessFailedCount]    INT            NOT NULL,
        [UserName]             NVARCHAR (256) NOT NULL,
        CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC)
    );
    
    
    GO
    CREATE UNIQUE NONCLUSTERED INDEX [UserNameIndex]
        ON [dbo].[AspNetUsers]([UserName] ASC);
    
    
    CREATE TABLE [dbo].[Names] (
        [Id]          INT            IDENTITY (1, 1) NOT NULL,
        [Nome]        NVARCHAR (50)  NULL,
        [Oroscopo]    NVARCHAR (50)  NULL,
        [Significato] NVARCHAR (MAX) NULL,
        [Sesso]       BIT            DEFAULT ((0)) NULL,
        [Origine]     INT            DEFAULT ((0)) NULL,
        PRIMARY KEY CLUSTERED ([Id] ASC)
    );
    
    
    
    CREATE TABLE [dbo].[UserStars] (
        [Id]     DECIMAL (18)   IDENTITY (1, 1) NOT NULL,
        [NameID] INT            NOT NULL,
        [UserID] NVARCHAR (128) NOT NULL,
        CONSTRAINT [PK_UserStars] PRIMARY KEY CLUSTERED ([Id] ASC)
    );
    Quando faccio il select mi dovrebbe ritornare la lista dei nomi con i suoi vari campi più un valore booleano che indica se il nome è stato selezionato dall'utente loggato.
    Il primo pezzo risulta semplice, una normalissima query, ma come faccio ad aggiungere il valore booleano true quando il nome e l'utente al momento collegato sono registrati sull'altra tabella?
    Consigliate una stesura diversa dei dati?
    Grazie

  2. #2
    Nottambulo non è in linea Scolaretto
    Luogo
    Campione d'Italia
    Post
    321
    Al momento sono arrivato a questa query, che funziona:

    codice:
    SELECT Id, Nome, Oroscopo, Origine, Sesso, Significato, (SELECT CAST(COUNT(*) AS BIT) AS Expr1 FROM UserStars WHERE Names.Id = UserStars.NameID AND UserStars.UserID = @UserId) AS Star FROM Names WHERE (LEFT (Nome, 1) = @Nome) AND (Sesso = @Sesso)

  3. #3
    L'avatar di nman
    nman non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,425
    Quote Originariamente inviato da Nottambulo Visualizza il messaggio
    codice:
    .......    
    [Id]     DECIMAL (18)   IDENTITY (1, 1) NOT NULL,
    ........
    Non ho capito la tua domanda (poi mi sembra che hai già risolto autonomamente)

    pero ho un dubbio ......

    Perché hai un ID autoincrementale che conterrà sempre un intero in formato DECIMAL ???

    .

  4. #4
    Nottambulo non è in linea Scolaretto
    Luogo
    Campione d'Italia
    Post
    321
    Ciao, non conoscevo questo pezzo di query:

    codice:
    SELECT CAST(COUNT(*) AS BIT
    Ora mi funziona tutto. L'id non serve a niente, l'avevo inserito per una mia comodità, attualmente inutile.
    Grazie

  5. #5
    L'avatar di nman
    nman non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,425
    Quote Originariamente inviato da Nottambulo Visualizza il messaggio
    ........ L'id non serve a niente, ........
    Sei sicuro ???

  6. #6
    Nottambulo non è in linea Scolaretto
    Luogo
    Campione d'Italia
    Post
    321
    si certo, la tabella l'ho copiata da quella aspnetuserroles, dove non c'è l'id. Avevo inserito l'id pensando di facilitare delle operazioni, ma sul lato pratico non ho riscontrato vantaggi. Cancellata. Sull'attuale tabella in uso, oltre ad aver rimosso l'id, ho indicizzato le due colonne e creato le relazione. Passo passo come quella di esempio nell'identity di asp.net.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi