Query duplica i risultati

di il
13 risposte

Query duplica i risultati

Salve,
ho riscritto il post in modo più chiaro poichè mi è stato fatto notare che quello precedente era incomprensibile.

FOTO ALLEGATA (nell'esporre il problema faccio riferimento a questa foto)

Ho un database con una tabella, la chiamo TabellaA per convenienza. La tabellaA ha tre campi: uno numerico che aumenta in modo progressivo ogni volta che viene inserito un record (è la ID, chiave primaria), altri due in cui inserisco dei valori sempre numerici (che però cambiano di record in record a seconda delle misurazioni che effettuo.
Poi ho una tabellaB che possiede il solito campo ID con chiave primaria (progressione numerica), e altri campi in cui inserire un testo breve. Questa tabella B possiede sempre e solo un record.

Eccoci al problema. Ho una QueryB. Questa mi mostra alcuni campi della tabellaA, alcuni della tabellaB e alcuni campi di un'altra query. QueryB non svolge nessun calcolo, non ha altro scopo e funzione se non quella di far visualizzare campi provenienti da tabelle e query.
Ecco cosa c'è nella QueryB:
-campo ID (chiave primaria) di tabellaA --> nella foto è la prima colonna
-2 campi in cui inserisco valori numerici sempre diversi (le "misurazioni"), di tabellaA --> nella foto è la seconda e terza colonna
-vari campi in cui inserisco un testo breve, di tabellaB --> nella foto sono dalla quarta alla settima colonna

NB: come si vede nella foto, la quarta e la settima colonna possiedono ognuna una parola che si ripete a record alternati (ricordo che tali colonne provengono da campi appartenenti alla tabellaB, quella che contiene UN SOLO record, che per l'appunto ha le parole "tres" e "r"). Inoltre, in tale query è presente un solo campo che ha chiave primaria (ID di tabellaA), ma NON è presente l'ID di tabellaB! (forse è qui che nasce l'inghippo che speigo di seguito...)

Perchè nella queryB (nella foto), le parole "tres" e "r", che sono ripetute una sola volta nella tabellaB da cui provengono, ora sono ripetute più volte... e in modo ALTERNATO ??
E perchè la prima colonna della queryB, che corrisponde ad una chiave primaria ID nella tabellaA da cui proviene, ora ripete/raddoppia i suoi valori??

Forse c'entra il fatto che la prima colonna corrisponde ad un campo con chiave primaria?

...ovviamente ciò che vedete nella foto, lo vedo poi nel report connesso a tale query... e non va bene ... perchè poi lo devo stampare questo report.

Spero di essere stato più chiaro

Vi ringrazio per l'attenzione che avete sempre nei miei confronti
Mi scuso per la mia incompetenza

(ALLEGATA FOTO)

AGGIORNAMENTO ---> Query

SELECT [TabellaA].Numero AS Espr1, [TabellaA].[x] AS Espr2, [TabellaA].[y] AS Espr3, [Query unione].[o], [Query unione].[z], [Query unione].[w], [Query unione].[j], [Query unione].[p], [Query unione].[k], [TabellaA].[l] AS Espr4, [TabellaA].[m] AS Espr5, [TabellaA].[n] AS Espr6
FROM [TabellaA], [Query unione];

Jibi
Allegati:
risultati di QueryB
risultati di QueryB

13 Risposte

  • Re: Query duplica i risultati

    Perché hai creato un nuovo 3d invece che completare con i dettagli quello già generato....?
    Che logica di utilizzo avrebbe questa cos...?
    Contatta un Amministratore e chiedi di Unire i 2 post, oppure riporta le attuali indicazioni nel post Originale ed elimina questo.
    Grazie
  • Re: Query duplica i risultati

    Jibi ... in poche parole ... devi postare la query non le foto!
  • Re: Query duplica i risultati

    Ho letto le FAQ e a quanto ho capito non posso cancellare il mio post perchè ho ricevuto delle risposte.
    Chiedo all'amministratore di unire i post.

    Mi scuso per la mia incompetenza


    jibi
  • Re: Query duplica i risultati

    OK, ma la query ??
  • Re: Query duplica i risultati

    Appena i due post verranno uniti,aggiungerò ogni dettaglio.
    Oregon, per "postare la query", intendi che devo incollare qui lo scritto SQL di essa?
    Grazie
    (Scusa ancora la mia ignoranza)
  • Re: Query duplica i risultati

    Lo "scritto sql" è la query ... Puoi farlo anche prima di unire i messaggi...
  • Re: Query duplica i risultati

    SELECT [TabellaA].Numero AS Espr1, [TabellaA].[x] AS Espr2, [TabellaA].[y] AS Espr3, [Query unione].[o], [Query unione].[z], [Query unione].[w], [Query unione].[j], [Query unione].[p], [Query unione].[k], [TabellaA].[l] AS Espr4, [TabellaA].[m] AS Espr5, [TabellaA].[n] AS Espr6
    FROM [TabellaA], [Query unione];

    Mi sono dimenticato di dire che in realtà ciò che chiamavo "tabellaB" è stato incluso in una query unione, quindi nella suddetta query è presente solo TabellaA e query unione (che include tabellaB)

    Grazie per l'attenzione

    jibi
  • Re: Query duplica i risultati

    jibi ha scritto:


    SELECT ... FROM [TabellaA], [Query unione];
    Senza una join fra le tabelle/query si ottiene il cosiddetto prodotto cartesiano. Cerca SQL cartesian product sul web per una "definizione".
  • Re: Query duplica i risultati

    E sulla JOIN

    http://www.dofactory.com/sql/joi
  • Re: Query duplica i risultati

    Questo thread include già nella richiesta quanto presente in quello originale.
    In questo caso non ha più senso unire le discussioni, quindi ho eliminato il vecchio thread.
  • Re: Query duplica i risultati

    Buona sera,
    come da voi suggeritomi, mi sono informato su come funzionano le relazioni join.... ma con mia soprpresa ho scoperto che il problema che ho scritto qui in questo argomento, non è dovuto alle join: in realtà dipende dal fatto che le query unione funzionano solo se pescano da tabelle contenenti record con campi NON VUOTI. Mi spiego meglio e cerco di spiegare quanto ho capito (è ovviamente possibile che mi sbagli, anzi lo spero...). Ciò che mi fa "duplicare i record" non c'entra con le relazioni join ma con le query unioni. Infatti, mi sono accorto che la maledetta query che mi duplica i record pesca anche da una query unione, che è lei che in reaktà duplica i record! Tale query unione pesca a sua volta da due tabelle, una delle quali è "vuota" (ha magari un solo record ma non possiede dati, un record vuoto, la cui unica informazione è la chiave primaria ID col valore 1). Quindi questa query unione in realtà non raddoppia assoluatemente i record, mi riporta esattamente ciò che deve pescare: un record con delle informazioni pescate dalla tabella ch possiede info, e un record vuoto che proviene dalla tabella che non posssiede info. Tutta colpa della query unione (tutta colpa mia). Allora, dato che necessariamente tale query unione deve pescare da quelle due tabelle, ma una sola di esse porta informazioni, che senso ha che la query unione i riporti anche il valore vuoto proveniente dalla tabella vuota, così che mi si duplicano i risultati?? Vorrei tanto che la query, vedendo che una tabella non porta informazioni, decidesse di non pesare da essa . Ripeto: entrambe le tabelle DEVONO essere collegate.
    è possibile fare una cosa di questo genere ? Ovvero eliminare dai risultati della query unione i record che non portano nessuna info ("nessun dato, nessuna scritta")
    scusate la mia ignoranza, sto ercando di imparare dai vostri suggerimenti.
    Vi ringrazio per avermi consigliato di studiare le join.

    metto il codice della query unione anche se forse risulterà inutile:

    SELECT [tabellaPiena].[Campo 1], [tabellaPiena].[Campo 2], [tabellaPiena].[Campo 3]
    FROM [tabellaPiena]
    UNION SELECT [tabellaVuota].[Campo 1], [tabellaVuota].[Campo 2], [tabellaVuota].[Campo 3]
    FROM [tabellaVuota];

    A presto

    jibi
  • Re: Query duplica i risultati

    Stai pasticciando con concetti matematici (la teoria relazionale dei dati) che invece sono estremamente precisi e senza ambiguita'.

    1) l'unione del contenuto di due tabelle fa esattamente questo: le unisce. Se una ha un record vuoto, l'unione aggiunge anche il record vuoto
    2) per filtrare dei record c'e' l'operatore fatto apposta, che in SQL corrisponde alla clausola WHERE
    3) SE non usi l'operatore JOIN OPPURE la clausola WHERE, la selezione su due tabelle GENERA il PRODOTTO CARTESIANO del contenuto delle tabelle.

    Consiglio: ESISTE una teoria estremamente precisa e dettagliata di come funziona un database relazionale, indipendente dalla marca del software che stai usando. Acquista un libro al riguardo e studia. Non e' nulla di stratosferico e non servono competenze da scienziato pazzo, ma solo buona volonta'.
  • Re: Query duplica i risultati

    jibi ha scritto:


    Tale query unione pesca a sua volta da due tabelle, una delle quali è "vuota" (ha magari un solo record ma non possiede dati, un record vuoto, la cui unica informazione è la chiave primaria ID col valore 1).
    Questo è assurdo.
    Non deve esistere un record vuoto. Non ha alcun senso che vi sia, è inutile e non verrà mai utilizzato, visto che non contiene dati.
    Va eliminato.

    Fine dei tuoi problemi.

    Se una tabella è vuota, non può 'accodare' né 'duplicare' record.
Devi accedere o registrarti per scrivere nel forum
13 risposte