Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326

    [Firebird/Sql] Ottenere dataresult con N fields

    Ciao a tutti,

    problema:
    ho 2 tabelle... TabellaClienti e TabellaArticoli

    devo eseguire una query per ottenere un dataresult composto da N record (n=numero clienti)
    e X fields (x=numero articoli)

    chiaramente non ho problemi ad ottenere gli N record.... il problema, per il quale chiedo aiuto, è di ottenere per ogni record X fields dove ogni fields rappresenta un articolo

    grazie per l'aiuto

    codice:
               | Art.1 | Art.2 | Art.3 | Art.4 | Art.5 | Art.6 |...... | Art.X |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 1  |       |       |       |       |       |       |       |       |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 2  |       |       |       |       |       |       |       |       |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 3  |       |       |       |       |       |       |       |       |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 4  |       |       |       |       |       |       |       |       |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 5  |       |       |       |       |       |       |       |       |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 6  |       |       |       |       |       |       |       |       |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 7  |       |       |       |       |       |       |       |       |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    ............................................................................
    ............................................................................
    cliente N  |       |       |       |       |       |       |       |       |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+

  2. #2
    SELECT Mi sembra di capire che fra TabellaClienti e TabellaArticoli esista una corrispondenza "molti a molti", pertanto, mi sembra improbabile che nel tuo database ci siano solo queste due (in qualche modo la tabella degli articoli sarà collegata ai clienti).
    Teoricamente lo stesso risultato si risolve con due join su una tabella intermedia che consente di relazionare le due tabelle.
    Puoi postare la struttura del tuo database, una bozza di uml o il codice che hai usato per crearlo ?

    Per ottenere questo risultato:
    | Art.1 | Art.2 | Art.3 | Art.4 | Art.5 | Art.6 |...... | Art.X |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 1 | | | | | | | | |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 2 | | | | | | | | |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 3 | | | | | | | | |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 4 | | | | | | | | |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 5 | | | | | | | | |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 6 | | | | | | | | |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    cliente 7 | | | | | | | | |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    .................................................. ..........................
    .................................................. ..........................
    cliente N | | | | | | | | |
    -----------+-------+-------+-------+-------+-------+-------+-------+-------+
    Non credo ti basti il semplice sql
    Experience is what you get when you don’t get what you want

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    Originariamente inviato da Xaratroom
    SELECT Mi sembra di capire che fra TabellaClienti e TabellaArticoli esista una corrispondenza "molti a molti", pertanto, mi sembra improbabile che nel tuo database ci siano solo queste due (in qualche modo la tabella degli articoli sarà collegata ai clienti).
    Teoricamente lo stesso risultato si risolve con due join su una tabella intermedia che consente di relazionare le due tabelle.
    Puoi postare la struttura del tuo database, una bozza di uml o il codice che hai usato per crearlo ?
    ciao e grazie per l'aiuto!

    si, le due tabelle sono collegate tra di loro tramite una terza tabella quale TABELLAMOVIMENTI nella quale sono registrati gli articoli che i clienti acquistano.

    ed io, inserirò, tramite un apposito calcolo, il valore corrispondente nella cella corrispondente.

    questa la struttura delle tabelle.

    codice:
    CREATE TABLE CLIENTI(
        ID                 INTEGER NOT NULL PRIMARY KEY,
        ITEM               VARCHAR(150))
    
    CREATE TABLE ARTICOLI(
        ID                 INTEGER NOT NULL PRIMARY KEY,
        ITEM               VARCHAR(150) NOT NULL)
    
    CREATE TABLE MOVIMENTI(
        ID                 INTEGER NOT NULL PRIMARY KEY,
        DATA               DATE NOT NULL,
        IDCLIENTE          INTEGER REFERENCES CLIENTI(ID) NOT NULL,
        IDARTICOLO         INTEGER REFERENCES ARTICOLI(ID) NOT NULL,
        PREZZO             NUMERIC(15,2) NOT NULL,
        QUANTITA           NUMERIC(15,2) NOT NULL,
        TOTALE             NUMERIC(15,2) NOT NULL);

    Originariamente inviato da Xaratroom
    Teoricamente lo stesso risultato si risolve con due join su una tabella intermedia che consente di relazionare le due tabelle.
    mi puoi dire come?

    grazie

  4. #4
    Sono un po' arrugginito con SQL ma credo possa funzionare qualcosa di questo tipo:
    codice:
    select ARTICOLI.ID as ARTICOLO, CLIENTI.ID as CLIENTE, SUM(MOVIMENTI.QUANTITA) as QUANTITA
    from ARTICOLI join MOVIMENTI 
    on (ARTICOLI.ID = MOVIMENTI.IDARTICOLO) join CLIENTI
    on (CLIENTI.ID = MOVIMENTI.IDCLIENTI)
    group by CLIENTI.ID
    Fai delle prove perché io non ho provato

    http://database.html.it/articoli/leg...elle-in-mysql/
    Experience is what you get when you don’t get what you want

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.