Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    451

    [MySQL] Sapere record non trovati

    non so se è possibile fare una cosa del genere ma se io ho una query:

    codice:
    SELECT * FROM prova WHERE id IN (1,2,3)
    e la table

    codice:
    ID Nominativo
    1  Pippo
    2  Pluto
    io voglio che lui mi dica... guarda che l'id 3 non esiste... cioè una selezione al contrario.

    E' possible una cosa del genere???

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ti serve una tabella con un campo che contenga tutti i numeri progressivi da 1 a N.

    codice:
    select n.id from numeri as n
    left join (select id from prova where id in (1,2,3)) as p
    on n.id = p.id
    where n.id <4 and p.id is null

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    451
    ci avevo pensato al JOIN per i campi null... ma il problema è che questi dati non si trovano nel db ma gli vengono passati.

    avevo pensato anche al comando EXISTS ma ho lo stesso problema

    sembra che l'unica soluzione sia un ciclo e provare id per id e memorizzare in un array tutti quelli negativi... il problema che così è troppo lento


    Grazie lo stesso.

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da [_Kilckk_]
    ma il problema è che questi dati non si trovano nel db ma gli vengono passati.
    Spiegati meglio

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    451
    scusa ora ho letto meglio la tua soluzione e direi che è ottima... ma non ho tutto questo spazio su db... perchè dovrei creare una tabella con numeri che partono da

    1 a 2147483647 (INT 11)

    e visto che nel db già stiamo abbastanza stretti non credo di poterlo fare... senza contare che non credo che migliori molto in termini di velocità.

    Grazie lo stesso.

  6. #6
    Originariamente inviato da [_Kilckk_]
    scusa ora ho letto meglio la tua soluzione e direi che è ottima... ma non ho tutto questo spazio su db... perchè dovrei creare una tabella con numeri che partono da

    1 a 2147483647 (INT 11)

    e visto che nel db già stiamo abbastanza stretti non credo di poterlo fare... senza contare che non credo che migliori molto in termini di velocità.

    Grazie lo stesso.
    oltre a leggere quello che ti viene suggerito, rileggi anche quello che scrivi.

    NON ti serve una tabella con TUTTI i numeri, ma una temp con i soli numeri passati nella IN(). Quindi una tabella davvero piccola, visto che nella IN() passerai verosimilmente poca roba.


  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    451
    Originariamente inviato da optime
    oltre a leggere quello che ti viene suggerito, rileggi anche quello che scrivi.

    NON ti serve una tabella con TUTTI i numeri, ma una temp con i soli numeri passati nella IN(). Quindi una tabella davvero piccola, visto che nella IN() passerai verosimilmente poca roba.

    Sto proprio fuso...

    ora ci provo e vi faccio sapere.

    Grazie tante

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.