Visualizzazione dei risultati da 1 a 8 su 8

Discussione: SELECT COMPLICATA

  1. #1

    SELECT COMPLICATA

    HO 3 TABELLE:

    PRODUCTS
    - Una contiente i PRODOTTI con nome, IDPRODOTTO, CATEGORIA, codice, prezzopieno ecc..

    clientiart
    - La seconda contiene ID-CLIENTE, PERC_SCONTO, IDPRODOTTO

    clienticategoria
    - La terza contiene ID-CLIENTE, PERC_SCONTO_x_CATEGORIA, CATEGORIA

    Come posso fare una select che contenga gli sconti che ha un cliente riferiti sia alla categoria e sia all'articolo singolo.

    Devo stampare tutti gli articoli con listino personalizzato del cliente.

    In sostanza se l'articolo singolo ha uno sconto "personale" stamperò a video quello mentre se non ha sconto personale stamperò lo sconto riferito alla categoria dell'articolo, se non ci sono sconti nemmeno per la categoria dell'articolo userò il prezzopieno della TABELLA1

    ------------------

    Ho usato questa select che funziona, ma mi permette solo
    di stampare a video gli articoli di un certo cliente che hanno lo sconto "personalizzato"(cioè riferito all'ID dell'articolo)

    sql= "SELECT price, ( price * ( 100 - scontoperc)) / 100 AS sconto, products.catcode, products.productid AS codartx, * FROM clientiart RIGHT JOIN products ON clientiart.productid=products.productid WHERE (((products.catcode)="&catcode&") AND ((clientiart.custid)="&custid&" Or (clientiart.custid) Is Null) AND ((clientiart.codcategoria)="&catcode&" Or (clientiart.codcategoria) Is Null))"

    Spero di essermi spiegato...
    GRAZIE

    http://www.adottauntetto.com

  2. #2
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022
    Ti conviene eseguire il JOIN di tutte e tre le tabelle, con RIGHT o LEFT a seconda dei casi. In questo modo puoi ragionare su un'inca tabella. Poi, estraendo i dati dal db, fai delle condizioni sui campi NULL. Quindi, se per es. lo sconto personale è NULL, allora dovrai riferirti al volore dell'altro campo.
    ...mi rendo conto di non aver brillato in chiarezza

  3. #3
    il problema è che non so quasi nulla di sql...
    la select che ho postato è stata estratta da access e successivamente adattata alla pagina ASP.
    Quindi ciò che mi serve è la select vera e propria....
    so che è una richiesta un pò eccessiva ma è quello che mi serve

    Grazie ancora

    http://www.adottauntetto.com

  4. #4

    http://www.adottauntetto.com

  5. #5
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022
    Non so nemmeno quali siano i nomi di tutti i campi delle tue tabelle,
    comunque dovresti scrivere una cosa del genere:

    codice:
    SELECT products.IDprodotto, products.categoria ... FROM (products
    LEFT JOIN clientiart ON products.IDprodotto = clientiart.IDprodotto)
    LEFT JOIN clienticategoria ON clientiart.ID-cliente = clienticategoria.ID-cliente
    Guarda se è il caso di sostituire LEFT con RIGHT. Ho scritto questa query al volo.

  6. #6
    GRANDE...ci siamo quasi

    STo usando

    SELECT products.price, (price*(100-scontoperc))/100 AS sconto1, (price*(100-scontopercat))/100 AS sconto2, products.productid, products.price, products.catcode
    FROM (products LEFT JOIN clientiart ON products.productid = clientiart.productid) LEFT JOIN clienticategoria ON clientiart.custid = clienticategoria.custid
    WHERE (((products.catcode)=6) OR ((clienticategoria.custid)=1 ) AND ((clientiart.custid)=1 ));


    ...l'unica cosa è che mi calcola lo socnto solo nei prodotti che si trovano nella tabella CLIENTIART, però c'è di bello che me li visualizza tutti

    ...scusami per la confusione
    (ora devo scappare) grazie ancora ..a domani

    http://www.adottauntetto.com

  7. #7

    ...non ci siamo

    UMANISTA!!!! HELP!

    non ho testato la select e ora devo iniziare da capo...!

    sql1= "SELECT products.price, (price*(100-scontoperc))/100 AS sconto1, (price*(100-scontopercat))/100 AS sconto2, products.productid, products.price AS pricex, products.catcode AS catcodex, products.name AS namex FROM (products LEFT JOIN clientiart ON products.productid = clientiart.productid) LEFT JOIN clienticategoria ON products.catcode = clienticategoria.catcode WHERE (((products.catcode)="&catcode&") OR ((clienticategoria.custid)="&custid&") AND ((clientiart.custid)="&custid&"))"

    RIEPILOGO

    1) Tabella: PRODUCTS

    Contiene l'anagrafica del prodotto (nome , codice ecc...) l'id del prodotto (productid) il prezzo (price) e la categoria (catcode)

    2) Tabella: CLIENTIART

    Contiene l'id del cliente (custid), l'id dell'articolo (productid) e lo sconto percentuale oper singolo articolo (scontoperc)

    3) Tabella: CLIENTICATEGORIA

    Contiene l'id delm cliente (custid), la categoria (catcode) e lo sconto percentuale per categoria (scontopercat)

    ...come faccio ad estrarre tutti gli articoli riferiti al
    cliente con una certo ID e relativi sconti per singolo prodotto e per singola categoria ????

    http://www.adottauntetto.com

  8. #8

    http://www.adottauntetto.com

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.