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

    Soluzioni query in SQL?

    Salve a tutti, riporto parte del compito da me svolto di Basi di Dati. Se qualcuno sarebbe così gentile da scrivermi il corretto svolgimento di tali interrogazioni in SQL (anche solo di alcune, magari quelle più complicate) così da poterle confrontare con le mie.
    Vi ringrazio in anticipo.

    Articoli(CODARTICOLO, Descrizione, QuantDisp, LivRiordino, PrezzoAcq, ScontoMax)
    Vendita(NFATTURA, DataVendita, CodCliente*)
    ElencoFattura(NFATTURA*, CODART*, Quantità, Sconto)
    Clienti(CODICECLIENTE, Nome, Cognome, Città)

    In maiuscolo la chiave primaria di ogni relazione.
    I vincoli di chiave esterna sono:
    - fra CordArt della relazione ElencoFattura e la chiave CodArticolo della relazione Articoli;
    - fra l'attributo NFattura della relazione ElencoFattura e la chiave NFattura della relazione Vendita.

    Scrivere in SQL le seguenti query:
    1. Elenco delle descrizioni degli articoliacquistati dal sig. Mario Rossi
    2. La data della fattura e il codice del cleinte per cui tuti gli articoli di tale fattura sono stati venduti con uno sconto minore del 15%. (Usare le select annidate)
    3. Le descrizioni degli articoli di prezzo massimo.
    4. Determinare i codici clienti il cui numero di fatture nel 2011 è superiore a 100.
    5. Determinare la descrizione degli articoli con il maggiore sconto applicato.
    6. Determinare il codice cliente con il massimo numero di fatture nel 2011.
    7. Dopo aver determinato l'ordine da rispettare nella creazione delle tabelle elencate sopra, scrivere lo schema relazionale completo, sintatticamnete corretto, sotto forima di "create table" della tabella ElencoFattura, includendo eventuali domini, valori di default dei campi e vincoli (anche aggiuntivi, se questo fosse utile), la cui chiave primaria è formata dalla coppia (NFattura, CodArt) e imporre che il campo Quantità sia un valore non nullo positivo e che il campo Sconto abbia come valore di default 5.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    ROTFL il progetto logico è totalmente sballato

  3. #3

    Re: Soluzioni query in SQL?

    Originariamente inviato da 19pino87
    Salve a tutti, riporto parte del compito da me svolto di Basi di Dati. Se qualcuno sarebbe così gentile da scrivermi il corretto svolgimento di tali interrogazioni in SQL (anche solo di alcune, magari quelle più complicate) così da poterle confrontare con le mie.
    posta le tue, noi eventualmente le si controlla

  4. #4
    @franzauker: Sballato?!?!?! O_o
    @optime: ok, allora:

    2. SELECT DataVendita, CodCliente
    FROM Vendita
    WHERE NFattura <> ALL (SELECT NFattura
    FROM ElencoFattura
    WHERE Sconto >= 15%)

    3. SELECT Descrizione
    FROM Articoli
    HAVING max(PrezzoAcq)

    4. SELECT CodCLiente
    FROM Vendita
    WHERE DataVendita = 2011
    GROUP BY CodCliente
    HAVING COUNT(Fatture) > 100

    5. SELECT DISTINCT Descrizione
    FROM Artciolo, ElencoFattura
    WHERE CodArticolo = CodArt
    HAVING max(Sconto)

    6. CREATE VIEW NFattureCliente(CodCliente, NumFatture) AS
    SELECT CodCliente, COUNT(NFattura) AS NumFatture
    FROM Vendita
    WHERE DataVendita = 2011
    GROUP BY CodCliente, NFattura

    SELECT CodCliente
    FROM NFattureCliente
    HAVING max(NumFatture)

    1° e 7° punto non sono riuscito a farli. Potreste aiutarmi?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da 19pino87
    @franzauker: Sballato?!?!?! O_o
    Totalmente.
    E' una modellazione che, semplicemente, non corrisponde alla semantica di "fattura" o in generale documento fiscale.
    Per capirci se progetti così uno schema... ti ridono dietro

    Per il resto... direi che una buona parte delle tue "soluzioni" sono sbagliate.
    ---
    Come fare? Semplice.
    Impari solo quando fai (la necessità aguzza l'ingegno) è inutile "ravanare" su un foglio di carta.

    Creati materialmente le tabelle, inserisci dei record di prova.
    Testa direttamente le query che hai pensato.

    Senza "manualità" questi esercizietti sembrano chissà che, un po' come parcheggiare un'automobile.
    Quando fai scuola guida sembra difficilissimo, dopo 20 anni di patente lo puoi fare anche dormendo.

    Esercizio, esercizio, esercizio!

  6. #6
    Ti ringrazio per il consiglio!!!
    Potresti in ogni caso scrivermi la soluzione, o cmq una bozza, della query n. 7?

  7. #7
    Originariamente inviato da 19pino87
    Ti ringrazio per il consiglio!!!
    Potresti in ogni caso scrivermi la soluzione, o cmq una bozza, della query n. 7?
    aridajela, forse non ti è chiaro lo spirito del forum: qui si discute, non è un helpdesk (o peggio, un mercato: aho, famme questo, famme quello...)

    e al punto 7 non c'è una query, ma l'intero disegno del db!


  8. #8
    Avete ragione, scusate!!
    Posso allora postare una mia soluzione riguardo il quesito 7 e chiedere alcune delucidazioni?
    Mia soluzione:

    CREATE TABLE ElencoFattura
    (
    __NFattura integer(10) REFERENCES Vendita(NFattura),
    __CodArt integer(5) REFERENCES Articoli(CodArticolo),
    __Quantità integer(4) CHECK(Quantità>0),
    __Sconto integer(3) DEFAULT 5,
    PRIMARY KEY(NFattura,CodArt)
    )

    Supponendo che il Numero di fattura sia composto da 10 cifre e il Codice degli articoli da 5 cifre.
    Non sono molto sicuro sulla corretta definizione dei vincoli interrelazionali in NFattura e CodArt.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da 19pino87
    Avete ragione, scusate!!
    Posso allora postare una mia soluzione riguardo il quesito 7 e chiedere alcune delucidazioni?
    Mia soluzione:

    CREATE TABLE ElencoFattura
    (
    __NFattura integer(10) REFERENCES Vendita(NFattura),
    __CodArt integer(5) REFERENCES Articoli(CodArticolo),
    __Quantità integer(4) CHECK(Quantità>0),
    __Sconto integer(3) DEFAULT 5,
    PRIMARY KEY(NFattura,CodArt)
    )

    Supponendo che il Numero di fattura sia composto da 10 cifre e il Codice degli articoli da 5 cifre.
    Non ho idea di che tipo di db utilizziate, quindi non è che posso dare grandi suggerimenti (anche perchè sono del tutto contrario ad approcci come questo, ma vabbè)
    Ti segnalo però che non ha un gran senso indicare la lunghezza degli interi, tipicamente sono interi da 4 byte (2^32 se signed)
    Non sono molto sicuro sulla corretta definizione dei vincoli interrelazionali in NFattura e CodArt.
    neppure io, ma come detto è un db che non uso

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.