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

    Chi mi aiuta a scrivere una query???

    Nel mio database ho 3 tabelle tabella1 tabella2 tabella3. I campi di queste tre tabelle sono : data,idcliente,punti.
    Voglio fare una query che estragga la data ed i punti dalle singole tabelle quanto il idcliente == 100
    ed il risultato deve essere elencato in ordine di data.
    Se la tabella fosse una non avrei avuto nessun problema ma siccome i dati devono arrivare da tre tabelle e poi messe in ordine di data non sò come fare.
    Qualcuno mi può aiutare????

    Grazie Franco

  2. #2
    Non credo di avere capito bene quello che ti serve, ad ogni modo prova il seguente codice:

    Codice PHP:
    $sql "
         SELECT t1.data, t1.punti, t2.data, t2.punti,, t3.data, t3.punti
         FROM tabella1 t1, tabella2 t2, tabella3 t3
         WHERE t1.idcliente = t2.idcliente
         AND t1.idcliente = t3.idcliente
         AND t1.idcliente = 100
         ORDER BY t1.data ASC
    "

    Vedi un po' se funziona???

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    1,611
    Nel mio database ho 3 tabelle tabella1 tabella2 tabella3. I campi di queste tre tabelle sono : data,idcliente,punti
    hai tre tabelle con gli stessi campi? :master:
    NON ABBANDONATE CANI O GATTI!!!

  4. #4
    beh... in effetti suonava strano anche a me.
    :master:
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Si effettivamente ho tre tabelle con gli stessi campi.
    Veniamo però al mio problema.
    Potrei estrarre i dati con 3 query tipo.
    $q1='select data,punti from tabella1 where idcliente=100';
    $q2='select data,punti from tabella2 where idcliente=100';
    $q3='select data,punti from tabella3 where idcliente=100';

    Ipotizziamo che i dati estratti siamo
    dalla tabella 1
    01/01/2007 - 25
    07/07/2007 - 48

    dalla tabella 2

    11/01/2007 - 13
    17/06/2007 - 52


    dalla tabella 3

    15/03/2007 - 36

    Pertanto la lista dovrebbe essere
    01/01/2007 - 25
    11/01/2007 - 13
    15/03/2007 - 36
    17/06/2007 - 52
    07/07/2007 - 48

    Come fare per arrivare a questo risultato dopo aver<lanciato le tre query????
    Come fare a recuperare i dati in ordine come li vorrei????
    Grazie
    Franco

  6. #6
    Dimenticavo di precisare che la data nell'esempio è espressa in d-m-Y
    ma nel database è inserita come timestamp questo permette nelle singole query di mettere
    order by data
    Grazie
    Franco

  7. #7
    Hai provato la query che ti ho scritto io?
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    Scusa alcio74 mi sono dimenticato di risponderti. Si ho provato ....
    siccome lo script era lentissimo ho provato a verificare con mysql_num_rows($query) quante righe trovava. Una esagerazione esattamente 879648
    Estraendo invece con 3 singole query dalla tabella1 e poi tabella2 ed infne tabella3 venivano invece rispettivamente 68 - 147 - 88 righe
    C'è qualcosa nella query che mi hai dato tu che non funziona anche perchè le tabelle contengono rispettivamente 882 - 830 -779 record ciascuna.

    Comunque grazie
    Franco

  9. #9
    Beh..... di sicuro andava in loop.

    :master:
    Sarebbe da perderci un po' di tempo dietro per capire come ottimizzare la query.
    Provato con una subquery?

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.