Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Verificare singola corrispondenza

    Salve a tutti, ho un database con 4 tabelle, vorrei verificare la presenza di record uguali con un'unica query, mi spiego meglio:
    codice:
    SELECT * FROM Tabella1
    INNER JOIN Tabella2 ON Tabella1.Campo = Tabella2.Campo
    INNER JOIN Tabella3 ON Tabella1.Campo = Tabella3.Campo
    INNER JOIN Tabella4 ON Tabella1.Campo = Tabella4.Campo;
    Con questo codice, visualizzo la corrispondenza tra tutte e 4 le tabelle, mentre io vorrei poter visualizzare se c'è una corrispondenza anche solo tra 2 tabelle, però con un unica query.
    È possibile?
    Grazie!

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Potrebbe funzionare così:

    SELECT * FROM Tabella1
    LEFT OTUTER JOIN
    Tabella2 ON Tabella1.Campo=Tabella2.Campo
    LEFT OTUTER JOIN
    Tabella3 ON Tabella1.Campo=Tabella3.Campo
    LEFT OTUTER JOIN
    Tabella4 ON Tabella1.Campo=Tabella4.Campo;
    WHERE (
    Tabella2.Campo IS NOT NULL AND Tabella3.Campo IS NOT NULL AND Tabella4.Campo IS NOT NULL)

  3. #3
    Quote Originariamente inviata da URANIO Visualizza il messaggio
    Potrebbe funzionare così:

    SELECT * FROM Tabella1
    LEFT OTUTER JOIN
    Tabella2 ON Tabella1.Campo=Tabella2.Campo
    LEFT OTUTER JOIN
    Tabella3 ON Tabella1.Campo=Tabella3.Campo
    LEFT OTUTER JOIN
    Tabella4 ON Tabella1.Campo=Tabella4.Campo;
    WHERE (
    Tabella2.Campo IS NOT NULL AND Tabella3.Campo IS NOT NULL AND Tabella4.Campo IS NOT NULL)
    Grazie, ho provato, effettivamente sembra funzionare, però nel WHERE devo mettere OR e non AND, perchè se un dato non è presente in tutte le tabelle, non mi restituisce corrispondenze, al contrario con OR, mi segna tutto NULL, compreso l'ID, nelle tabelle dove la corrispondenza non c'è, mentre nelle altre c'è.
    Quindi ecco il codice corretto:
    codice:
    SELECT * FROM Tabella1
    LEFT OUTER JOIN Tabella2 ON Tabella1.Campo=Tabella2.Campo
    LEFT OUTER JOIN Tabella3 ON Tabella1.Campo=Tabella3.Campo
    LEFT OUTER JOIN Tabella4 ON Tabella1.Campo=Tabella4.Campo;
    WHERE (Tabella2.Campo IS NOT NULL OR Tabella3.Campo IS NOT NULL OR Tabella4.Campo IS NOT NULL);
    Grazie ancora URANIO, domani lo testerò con calma, oggi non ho avuto tempo.

  4. #4
    Ho avuto poco tempo in questo periodo, perciò chiedo scusa del ritardo.
    Impostando come sopra, non sempre uscivano i risultati desiderati.
    Navigando ho scoperto un altro comando, che sembra semplificare le cose e sembra funzionare:
    codice HTML:
    SELECT * FROM Tabella1 WHERE Campo = ".$variabile."
    UNION
    SELECT * FROM Tabella2 WHERE Campo = ".$variabile."
    UNION
    SELECT * FROM Tabella3 WHERE Campo = ".$variabile."
    UNION
    SELECT * FROM Tabella4 WHERE Campo = ".$variabile.";

  5. #5
    Quote Originariamente inviata da FioreFix Visualizza il messaggio
    Ho avuto poco tempo in questo periodo, perciò chiedo scusa del ritardo.
    Impostando come sopra, non sempre uscivano i risultati desiderati.
    Navigando ho scoperto un altro comando, che sembra semplificare le cose e sembra funzionare:
    codice HTML:
    SELECT * FROM Tabella1 WHERE Campo = ".$variabile."
    UNION
    SELECT * FROM Tabella2 WHERE Campo = ".$variabile."
    UNION
    SELECT * FROM Tabella3 WHERE Campo = ".$variabile."
    UNION
    SELECT * FROM Tabella4 WHERE Campo = ".$variabile.";
    Rileggendo l'intero topic, mi sono accorto di averlo impostato male, quello che volevo fare, era verificare la presenza di un singolo recond tra tutte le tabelle, per non inserire un doppione.

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.