salve,
luicut ha scritto:
Non so se sono stato chiaro.
assolutamente NO
Però io devo selezionare tutti i campi di a che hanno credito=3. Ovviamente mettendo la condizione non tutti i campi di a saranno selezionati se non soddisfano la condizione. Avevo allora messo nella condizione isnull(voto) or giornata=3 e con i record con tutti i campi giornata=1 andava benone. Però se nella tabella b un codice fiscale è presente con giornata=1 ma non con giornata=3 questo non viene selezionato.
hai mischiato "giornata" e "credito" ed hai aggiunto anche un bel "Voto IS NULL" in modo che personalmente non ho piu' capito niente... sara' magari anche l'ora
personalmente non conosco e non uso MySql.. ma penso che tu possa usare la stessa sintassi di JOIN anche con questo motore..
se ho "capito" il tuo problema (facciamo finta di si
), puoi modificare il filtro di JOIN (almeno con SQL Server) in modo reinserire nel risultato quello che differentemente verrebbe omesso dalla clausola WHERE...
SET NOCOUNT ON;
CREATE TABLE #tA (
Id int NOT NULL,
Nome varchar(10),
Cognome varchar(10),
CodiceFiscale char(16)
);
CREATE TABLE #tB (
Id int NOT NULL,
CodiceFiscale char(16),
Voto int,
Credito int,
Giornata int
);
GO
INSERT INTO #tA VALUES ( 1 , 'Luicut', 'Luicut', '1234567890123456');
INSERT INTO #tA VALUES ( 2 , 'Andrea', 'Andrea', '2345678901234567');
INSERT INTO #tB VALUES ( 1 , '1234567890123456', NULL, 3, 1); -- si
INSERT INTO #tB VALUES ( 2 , '1234567890123456', NULL, 3, 3); -- si
INSERT INTO #tB VALUES ( 3 , '1234567890123456', -1, 3, 3); -- si
INSERT INTO #tB VALUES ( 4 , '1234567890123456', -1, 2, 3); -- no
GO
SELECT *
FROM #tA a LEFT JOIN #tB b
ON a.CodiceFiscale = b.CodiceFiscale
AND b.Credito = 3;
GO
DROP TABLE #tA, #tB;
--<----------
Id Nome Cognome CodiceFiscale Id CodiceFiscale Voto Credito Giornata
----------- ---------- ---------- ---------------- ----------- ---------------- ----------- ----------- -----------
1 Luicut Luicut 1234567890123456 1 1234567890123456 NULL 3 1
1 Luicut Luicut 1234567890123456 2 1234567890123456 NULL 3 3
1 Luicut Luicut 1234567890123456 3 1234567890123456 -1 3 3
2 Andrea Andrea 2345678901234567 NULL NULL NULL NULL NULL
ripeto, pero', che il discorso non l'ho mica capito tanto bene..
saluti