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

    query sql con left join...

    ragazzi mi aiutate a capire l'errore che ho fatto in questa query?
    Dunque io ho questa Query che funziona:
    codice:
    SELECT tab_categorie.*, tab_capitoli.*, tab_voci.*, tab_fornitori.*, tab_ordini.*, tab_fatture.* FROM tab_categorie, tab_capitoli, tab_voci, tab_fornitori, tab_ordini, tab_fatture WHERE tab_categorie.ID_categorie = tab_voci.id_categoria AND tab_capitoli.ID_capitoli = tab_voci.id_capitolo AND tab_voci.ID_voci = tab_ordini.id_voce AND tab_fornitori.ID_fornitori = tab_ordini.id_fornitore AND tab_ordini.ID_ordini = tab_fatture.id_ordine AND tab_fatture.id_progetto = "&Session("ID_progetto")&" AND tab_fornitori.elimina_fornitore = false AND tab_fornitori.ID_fornitori = " & fornitore
    a questa quey devo aggiungere un'ultima condizione, e cioè che la tabella "tab_fatture" deve avere una LEFT JOIN con la tabella "tab_pagamenti", perchè voglio mostrare oltre alle fatture esistenti anche quelle pagate.
    Ho provato così, ma mi da errore:
    codice:
    sql2 = "SELECT tab_categorie.*, tab_capitoli.*, tab_voci.*, tab_fornitori.*, tab_ordini.*, tab_fatture.* FROM tab_categorie, tab_capitoli, tab_voci, tab_fornitori, tab_ordini, (tab_fatture LEFT JOIN tab_pagamenti ON tab_pagamenti.id_fattura = tab_fatture.ID_fatture)  WHERE tab_categorie.ID_categorie = tab_voci.id_categoria AND tab_capitoli.ID_capitoli = tab_voci.id_capitolo AND tab_voci.ID_voci = tab_ordini.id_voce AND tab_fornitori.ID_fornitori = tab_ordini.id_fornitore AND tab_ordini.ID_ordini = tab_fatture.id_ordine AND tab_fatture.id_progetto = "&Session("ID_progetto")&" AND tab_fornitori.elimina_fornitore = false AND tab_fornitori.ID_fornitori = " & fornitore
    Come errore midice:
    "espressione join non supportata"
    Sapete dirmi cosa sbaglio?
    Grazie

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Lavori con Access?
    Provala in visualizzazione Query inserendo la nuova tabella ed impostando la relazione del join.

    Roby

  3. #3
    lavoro con access ma non ho mai fatto quello che mi consigli di fare.
    Ho sempre usato soltanto le tabelle e niente altro. Tutto il codice l'ho sempe scritto a mano.
    Potresti spiegarmi i passaggi da fare?
    Grazie

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Stampa la query copiala e incollala in Query (al posto di Tabelle) e sotto la scritta File hai la scritta SQL.
    Puoi vedere le relazioni tra le tabelle e volendo inserire le altre.

    Roby

  5. #5
    Ho impostato la relazione ma mi da errore.
    Stesso in access mi dice che non è possibile eseguire l'istruzione SQL perchè continene join ambigui. Creare una query separata che esegue il primo join, quindi includere la query nell'istruzione SQL.

    la query inquestione che da questo errore è la seguente:
    codice:
    SELECT tab_categorie.*, tab_capitoli.*, tab_voci.*, tab_fornitori.*, tab_ordini.*, tab_fatture.* FROM tab_categorie, tab_capitoli, tab_voci, tab_ordini, tab_fornitori, tab_fatture LEFT JOIN tab_pagamenti ON tab_fatture.ID_fatture = tab_pagamenti.id_fattura WHERE (((tab_categorie.ID_categorie)=[tab_voci].[id_categoria]) AND ((tab_capitoli.ID_capitoli)=[tab_voci].[id_capitolo]) AND ((tab_voci.ID_voci)=[tab_ordini].[id_voce]) AND ((tab_fornitori.ID_fornitori)=[tab_ordini].[id_fornitore] And (tab_fornitori.ID_fornitori)="&fornitore&") AND ((tab_ordini.ID_ordini)=[tab_fatture].[id_ordine]) AND ((tab_fatture.id_progetto)=2) AND ((tab_fornitori.elimina_fornitore)=False))
    Sapete dirmi come posso risolvere?
    Grazie a tutti

  6. #6
    Utente di HTML.it L'avatar di diegoctn
    Registrato dal
    May 2001
    Messaggi
    2,118
    Quando parla di join ambigui è perchè si è tentato di fare un join fra campi diversi (testo con numerico di solito....). Guarad nelle impostazioni delle tabelle i tipi di campi.

    Consiglio: prova la query in access e se non va togli una tabella e la sua join, così via fino a quando non trovi il join che ti blocca.

  7. #7
    Ottimo consiglio Diego!
    Sono andato a ritroso partendo dall'ultima tabella impostando tutte le relazioni, e poi alla fine l'ho completata a mano con la condizione WHERE che desideravo!
    E' uscita una query pazzesca.... ed io che la volevo fare tutta a mano!!

    SELECT tab_fatture.*, tab_pagamenti.*, tab_ordini.*, tab_fornitori.*, tab_voci.*, tab_capitoli.*, tab_categorie.*
    FROM (tab_categorie INNER JOIN tab_capitoli ON tab_categorie.ID_categorie = tab_capitoli.id_categoria) INNER JOIN (tab_voci INNER JOIN (tab_fornitori INNER JOIN (tab_ordini INNER JOIN (tab_fatture LEFT JOIN tab_pagamenti ON tab_fatture.ID_fatture = tab_pagamenti.id_fattura) ON tab_ordini.ID_ordini = tab_fatture.id_ordine) ON tab_fornitori.ID_fornitori = tab_ordini.id_fornitore) ON tab_voci.ID_voci = tab_ordini.id_voce) ON (tab_categorie.ID_categorie = tab_voci.id_capitolo) AND (tab_capitoli.ID_capitoli = tab_voci.id_capitolo);

    Grazie mille!

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.