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

    query annidate con controllo presenza

    allora, sicuramente dal titolo nn ci avete capito una mazza xke il problema è difficile da spiegare.
    cmq io ho una select da cui estraggo il campo id di una tabella, ora voglio controllare tramite un where che un'altro campo sia presenta in uno dei campi di un risultato di un'altra select.

    es:
    Codice PHP:
    $q "SELECT id FROM table1 WHERE sub = (SELECT id FROM table2)"
    ora io voglio che visto che la seconda select restituisce più di un valore controllare che il campo sub sia presente nel risultato della 2° query.
    esiste quancosa tipo "WHERE campo IN (SELECT...)" ???

    lo so mi sono impicciato e vi ho impicciato, ma mi serve assolutamente vi prego!!!
    phac
    www.service4pc.it
    Servizi per il computer e non solo!

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Ciao. Non ho capito granchè. Mi sa che sei più bravo a dar le risposte che a far le domande.

    Se la tua versione di mysql supporta le subquery puoi fare
    SELECT id FROM table1 WHERE sub in (SELECT id FROM table2)";
    prova.

  3. #3
    Puoi provare una cosa del genere
    $q = "SELECT uno.id FROM table1 as uno, table2 as due WHERE uno.sub = due.id"

  4. #4
    @nicola75ss: hai proprio ragione

    cmq la mia query dovrebbe essere una cosa del genere:
    Codice PHP:
    "SELECT id FROM azienda WHERE categoria IN (SELECT id FROM categoria WHERE id=" $row[0] . " OR subcat=" $row[0] . ")"
    dove $row[0] è la categoria padre. io voglio trovare il numero di aziende (quindi id) che appartengono a più sottocategorie, invece la query sopra funge solo per il primo livello quindi figli diretti della categoria padre.
    AIUTO!!!
    phac
    www.service4pc.it
    Servizi per il computer e non solo!

  5. #5
    hey raga ho risolto!!!!
    questa è query, l'unica cosa è che non è dinamica cioè non funziona x infiniti sottocategorie ma solo fino al terzo (e a me va benissimo tanto è il massimo)
    Codice PHP:
    SELECT id FROM azienda WHERE categoria IN (SELECT id FROM categoria WHERE id IN (SELECT id FROM categoria WHERE id IN (SELECT id FROM categoria WHERE id=OR subcat=1) OR subcat IN (SELECT id FROM categoria WHERE id=OR subcat=1)) OR subcat IN (SELECT id FROM categoria WHERE id IN (SELECT id FROM categoria WHERE id=OR subcat=1) OR subcat IN (SELECT id FROM categoria WHERE id=OR subcat=1))) 
    phac
    www.service4pc.it
    Servizi per il computer e non solo!

  6. #6
    come non detto il mio server ha mysql 4.0 e non mi accetta l'uso di "IN" come posso rimediare???
    phac
    www.service4pc.it
    Servizi per il computer e non solo!

  7. #7
    Hai provato come ti ho suggerito?

  8. #8
    si, ma sembra come se nn supportasse le subquery!!!! ASSURDO
    phac
    www.service4pc.it
    Servizi per il computer e non solo!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.