Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    144

    [MySql] aiuto select tra tabelle

    Ciao a tutti. Avrei bisogno su una select. Vi scrivo la struttura di 2 tabelle
    tabella_1
    ID
    nome

    tabella_2
    ID
    FK_tabella_1
    stato

    es.

    tabella_1
    ID NOME
    1 paperino
    2 pippo

    tabella_2
    ID FK_tabella_1 stato
    1 1 2
    2 1 1
    3 2 2
    4 2 2


    io vorrei tirare fuori dalla select solo gli ID della prima tabella dove TUTTI i record della seconda tabella hanno lo stato = 2
    per esempio il risultato dovrebbe essere ID = 2

    Ditemi se sono stato chiaro (immagino di no... ehehheheh)
    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    144
    RISOLTO

    SELECT X.ID
    FROM tabella_1 AS X
    WHERE (SELECT count(Y.ID) FROM tabella_2 as Y WHERE Y.FK_tabella_1 = X.ID AND (Y.stato = 0 OR Y.stato = 1))>0

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Scriverei. = 0 non > 0

    codice:
     SELECT X.ID
     FROM tabella_1 AS X
     WHERE (SELECT count(Y.ID) FROM tabella_2 as Y WHERE Y.FK_tabella_1 = X.ID AND (Y.stato = 0 OR Y.stato = 1)) = 0
    Poi se hai sempre tre stati e vuoi solo sapere quali sono gli id che hanno solo lo stato 2 allora puo' anche andare bene.
    Ma se hai più di tre stati o se vuoi sapere quali sono gli id con solo lo stato 0 per esempio allora non va.
    In effetti dovresti fare una query specifica per ogni stato e se ne aggiungi uno allora devi modificare tutte le query.

    codice:
    SELECT X.ID
    FROM tabella_1 AS X
    WHERE 
    (SELECT count(DISTINCT stato) FROM tabella_2 as Y WHERE Y.FK_tabella_1 = X.ID)=1
    AND
    (SELECT count(*) FROM tabella_2 as Y WHERE Y.FK_tabella_1 = X.ID AND Y.stato = 2)<>0
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.