Problemi di selezione

martedì 02 gennaio 2007 - 20.48

ken87 Profilo | Junior Member

Ho due tabelle a e b
Devo fare unione

Le tabelle hanno dipendenti e un campo impiegato o oprerai

Dopo la union Mi puo capitare che nella tabella a il dipendente sia operaio e nel altra impiegato
Come posso fare a dirgli che se capita di pescarmi dalla tabella b?

sanbiz Profilo | Senior Member

>Ho due tabelle a e b
>Devo fare unione
>
>Le tabelle hanno dipendenti e un campo impiegato o oprerai
>Dopo la union Mi puo capitare che nella tabella a il dipendente
>sia operaio e nel altra impiegato
>Come posso fare a dirgli che se capita di pescarmi dalla tabella
>b?

Mancano un po' di informazioni come ad esempio qual'è la tua base dati.
Sarebbe, inoltre, buona cosa fornire anche un esempio della struttura dei dati che stai utilizzando ed il maggior numero di informazioni sugli strumenti in tuo possesso. (Stai usando VB6 suppongo)

Veniamo al problema: non so se ho capito bene, ma tu hai due tabelle con campi uguali, contenenti un "dipendente" ed un "campo" che indica il ruolo.
Quindi nella tabella a potrei avere un impiegato che compare anche in tabella b, ma con campo ruolo differente giusto?
In questo caso tu vorresti che il ruolo fosse quello della tabella b. Sto sbagliando?

Proviamo a fare un esempio con SQL Server

set nocount on
use tempdb

-- Creo le due tabelle
create table a
(
Dipendenti varchar(50),
Campo1 varchar(25)
)

create table b
(
Dipendenti varchar(50),
Campo1 varchar(25)
)

-- Immetto qualche valore di esempio
insert into a values ('Sandro', 'Operaio')
insert into a values ('Michele', 'Operaio')
insert into a values ('Luca', 'Impiegato')
insert into a values ('Lorenzo', 'Impiegato')
insert into b values ('Sandro', 'Impiegato')
insert into b values ('Michele', 'Operaio')
insert into b values ('Luca', 'Impiegato')
insert into b values ('Lorenzo', 'Impiegato')

-- Eseguo la select (join) tra le due tabelle
select
a.dipendenti,
case
when a.campo1 <> b.campo1 then b.campo1
else a.campo1
end as 'campo1'
from a join b on a.dipendenti = b.dipendenti

/* Output
dipendenti campo1
-------------------------------------------------- -------------------------
Sandro Impiegato
Michele Operaio
Luca Impiegato
Lorenzo Impiegato
*/

-- Elimino le tabelle
drop table a
drop table b
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

ken87 Profilo | Junior Member

il database e in acess il programma che sto facendo e in visual basic 2005.
Non sapevo che sql avesse istruzioni else when case ecc.
Ma usando acess e visual bsic si possono usare.
Mi Illumini su queste possibilita di linguaggio? ero rimasto allte 4 istruzioni strimzite del linguaggio

sanbiz Profilo | Senior Member

>il database e in acess il programma che sto facendo e in visual
>basic 2005.
Ok.

>Non sapevo che sql avesse istruzioni else when case ecc.
>Ma usando acess e visual bsic si possono usare.
Non proprio, ma ci sono soluzioni simili anche in Access

>Mi Illumini su queste possibilita di linguaggio? ero rimasto
>allte 4 istruzioni strimzite del linguaggio
Che linguaggio? SQL o VB? E poi tanto striminzite non sono...

Sulla creazione delle tabelle, penso non ci siano problemi nè sull'inserimento dei dati in access.
Partiamo, quindi, dalla situazione in cui tu avrai il tuo database con le tue due tabelle a e b e qualche riga di dati in esse.

La select, a questo punto, potrebbe essere così formulata:

select
a.dipendenti,
iif(a.campo1 <> b.campo1, b.campo1, a.campo1) as Campo1
from a
left join b on a.dipendenti = b.dipendenti

--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5