+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

comando sql con più tabelle

  1. #1
    rashid non è in linea Novello
    Buongiorno!

    Devo impostare un modulo di ricerca i cui criteri saranno inseriti in TextBox1 e i risultati in DGV1
    La tabella che devo filtrare si chiama RighePreventivi ed è composta dai seguenti campi:

    IDRiga, Numero, Data, Cliente , TotaleDocumento

    il problema è che vorrei che i criteri di ricerca potessero essere selezionati anche dalla tabella Anagrafe che è composta da questi campi:

    IDCliente, Nickname, Denominazione, Nome, Cognome, P_IVA, C_Fisc. dove il campo Nickname è uguale al campo Cliente di RighePreventivi

    In pratica vorrei che il comando SELECT mi filtrasse i dati in base a Nickname, o a Nome, o a Cognome.
    Potreste aiutarmi? Grazie

  2. #2
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Non dici abbastanza particolari, ma si direbbe che devi fare una JOIN tra le due tabelle.
    ℹ️ Leggi di più su Brontolo ...

  3. #3
    rashid non è in linea Novello
    Grazie Brontolo! Funziona fino a che non collego una terza tabella. Commetto un errore di sintassi ma, non conoscendo bene (anzi affatto!) SQL non so come rimediare.

    Il comando che ho scritto è questo:
    "SELECT distinct Numero, Data, Cliente, TotaleDocumento, Accettato, Scaduto FROM RighePreventivi INNER JOIN Anagrafe ON RighePreventivi.Cliente = Anagrafe.Nickname INNER JOIN Prodotti ON RighePreventivi.Prodotto = Prodotti.Codice WHERE (RighePreventivi.Cliente like '%" + txtRicerca.Text + "%' or Anagrafe.Denominazione like '%" + txtRicerca.Text + "%' or Anagrafe.Nome like '%" + txtRicerca.Text + "%' or Anagrafe.Cognome like '%" + txtRicerca.Text + "%' or Anagrafe.Partita_IVA like '%" + txtRicerca.Text + "%' or Anagrafe.Codice_Fiscale like '%" + txtRicerca.Text + "%' or RighePreventivi.Prodotto like '%" + txtRicerca.Text + "%' or Prodotti.Descrizione like '%" + txtRicerca.Text + "%')"
    
    e ricevo questo avviso di errore:

    Errore di sintassi (operatore mancante) nell'espressione della query 'RighePreventivi.Cliente = Anagrafe.Nickname INNER JOIN Prodotti ON RighePreventivi.Prodotto = Prodotti.Codic'.

  4. #4
    Ferrari_and non è in linea Scolaretto
    Nella parte della select in cui indichi i campi da recuperare indica la tabella a cui fa riferimento es.
    Cliente sostituiscilo con RighePreventivi.Cliente ecc. nel caso ci sia omonimia di campi in 2 tabelle

  5. #5
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Ci sono un po' di problemi.
    Se devi fate la join tra tre tabelle è bene che tu racchiuda tra parentesi quella che ritieni debba essere fatta per prima.
    Non usare la proprietà Text di textbox concatenandola con le parti costanti. Usa invece i parametri.
    Usa gli alias per identificare la tabella a cui si riferiscono i campi.
    Usa l'operatore Like solo dove è necessario fare delle ricerche parziali, altrimenti usa l'operatore di uguaglianza.

    Come risultato otterrai perlomeno una query molto più leggibile e più facile da investigare.
    ℹ️ Leggi di più su Brontolo ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 6
    Ultimo Post: 11-07-2010, 11:08
  2. Comando vb 08
    Da grelza nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 27-08-2009, 22:14
  3. comando dos da vb.net
    Da TeGlider nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 12-04-2009, 19:17
  4. Comando DOS
    Da camaleonteplus nel forum Delphi
    Risposte: 3
    Ultimo Post: 09-04-2009, 08:25
  5. Risposte: 14
    Ultimo Post: 04-01-2007, 10:46