Query eliminazione

di Pippo42 il
10 risposte
Ciao,
devo cancellare i recod di una tabella "A" che ha lo stesso Id di un'altra tabella "B", avevo pensato di utilizzare una query di eliminazione, utilizzando come criterio di selezione un'altra query che filtra l'Id della tabella "B", ma mi richiede "immettere valore parametro".

10 Risposte

  • Pippo42 ha scritto:


    devo cancellare i recod di una tabella "A" che ha lo stesso Id di un'altra tabella "B", avevo pensato di utilizzare una query di eliminazione, utilizzando come criterio di selezione un'altra query che filtra l'Id della tabella "B", ma mi richiede "immettere valore parametro".
    Riporta il testo della query che hai scritto sino ad ora, così possiamo verificarla ed eventualmente suggerire le correzioni.
  • DELETE [A].Id
    FROM [A]
    WHERE ((([A].Id)=[B]![Id]));
  • Pippo42 ha scritto:


    DELETE [A].Id
    FROM [A]
    WHERE ((([A].Id)=[B]![Id]));


    Manca la parte in cui definisci che cos'è "B", quindi è normale che ti chieda di cosa si tratta.

    Puoi provare questo statement:
    
    DELETE FROM A
    INNER JOIN B ON A.Id = B.Id
    
    In alternativa,
    
    DELETE FROM A
    WHERE A.Id IN (SELECT B.Id FROM B)
    
    Se parliamo di pochi record, le performance non dovrebbero avere particolari problemi in entrambi i casi, quindi privilegia la più leggibile.

    Ciao!
  • Pippo42 ha scritto:


    devo cancellare i recod di una tabella "A" che ha lo stesso Id di un'altra tabella "B"
    Non so se Alka sta proponendo in SQL la stessa cosa che io dirò in altre parole:
    1. Crea una query di selezione che mette in relazione le tabelle A e B in base al campo ID
    2. Trascina nella griglia i campi da eliminare
    3. Poi clicca in alto su "query di eliminazione"
    4. Esegui la query una volta.
    Non ho testato, ma prova.
  • Grazie per collaborazione, risolvo con la query.
    Ciao
  • Quando eseguo la query di eliminazione, errore "specificare la tabella contenente di i record da eliminare".
  • Ho seguito le indicazioni: "Per correggere l'errore, impostare la proprietà Record univoci della query su Sì." ma ancora non funziona.
  • Pippo42 ha scritto:


    Ho seguito le indicazioni: "Per correggere l'errore, impostare la proprietà Record univoci della query su Sì." ma ancora non funziona.
    Siccome suppongo che "A" e "B" non siano i reali nomi delle tabelle, prova a fornirci la query attuale e qualche informazione sulla struttura delle tabelle, o quantomeno i tipi dei campi che stai confrontando, giusto per capire meglio il contesto.

    Se non è un campo chiave, magari c'è da aggiungere un DISTINCT (solo una ipotesi), ma senza ulteriori informazioni si fatica.

    Ciao!
  • Risolto,
    ho seguito le indicazioni dell'help on line.
    Questa è la soluzione:

    Causa possibile:
    Non hai digitato un asterisco per ogni tabella nei predicati ALL, DISTINCT, DISTINCTROW. Invece, hai digitato i nomi dei campi (ad esempio, Customers.Addressinvece di Customers.*).

    Grazie a tutti per l'aiuto.
Devi accedere o registrarti per scrivere nel forum
10 risposte