Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente bannato
    Registrato dal
    Jan 2004
    Messaggi
    110

    [mysql] primo elemento di una query

    non sapevo che scrivere nel titolo...

    dunque, ho una tabella CLIENTI ed una tabella STORICO.

    i record risultanti dalla query di estrazione (semplice unione delle due tabelle sopra citate 'enne a enne') sono:

    -------------------
    CLIENTI STORICO
    -------------------
    cliente1 A (<-- ok)
    cliente1 B
    cliente1 C

    cliente2 D

    cliente3 B

    cliente4 A (<-- ok)
    cliente4 D

    cliente5 C
    cliente5 A
    -------------------

    vorrei una query che mi facesse un'estrazione di SOLTANTO i clienti che abbiano come PRIMO ELEMENTO DELLO STORICO il valore --> A <--.

    nell'esempio sopra il risultato voluto sono:
    cliente1 e cliente4.

    p.s. l'ordinamento è decrescente per data, è un campo dello storico.


    thanx a lot to tutti...

  2. #2

    where

    puoi postare la query che fai attualmente??

    Cmq basterebbe mettere una "where storico = 'A'"

    Ciao
    :tongue:

  3. #3

    ops.. sorry

    ho capito male...
    tu vuoi prendere il cliente che abbia 'A' come primo record di storico...

    mumble mumble... prova a postare la query che ci ragioniamo sopra...
    :tongue:

  4. #4
    L'unica cosa che mi viene in mente è di creare un nuovo campo chiamato ad esempio "ordine" e inserire l'ordine dei record di "Storico" in questo modo:

    codice:
    STORICO
    lettera  ordine  cliente
    A          1          1
    B          2          1
    C          3          1
    A          1          4
    D          2          4
    E poi usi una query di questo tipo:

    SELECT * FROM clienti, storico WHERE clienti.id = storico.cliente AND lettera = 'a' AND storico.ordine = 1

    Ovviamente dovrai creare uno script che compila il campo ordine in base al campo 'data', mettendo 1, 2, 3, ecc in ordine crescente...

    Non è una bella soluzione e neanche veloce, ma se il server non ha già troppo lavoro non dovresti notare rallentamenti...
    Meglio essere folle per proprio conto che saggio con le opinioni altrui.
    F. Nietzsche

  5. #5
    Utente bannato
    Registrato dal
    Jan 2004
    Messaggi
    110
    Originariamente inviato da carlowoo85
    L'unica cosa che mi viene in mente è di creare un nuovo campo chiamato ad esempio "ordine" e inserire l'ordine dei record di "Storico" in questo modo:

    codice:
    STORICO
    lettera  ordine  cliente
    A          1          1
    B          2          1
    C          3          1
    A          1          4
    D          2          4
    E poi usi una query di questo tipo:

    SELECT * FROM clienti, storico WHERE clienti.id = storico.cliente AND lettera = 'a' AND storico.ordine = 1

    Ovviamente dovrai creare uno script che compila il campo ordine in base al campo 'data', mettendo 1, 2, 3, ecc in ordine crescente...

    Non è una bella soluzione e neanche veloce, ma se il server non ha già troppo lavoro non dovresti notare rallentamenti...



    in effetti sarebbe una soluzione comoda e semplice, purtroppo non posso modificare il database...

    piccolanomade, per ora la query che fo è una semplicissima unione di due tabelle:

    SELECT * FROM clienti, storico WHERE clienti.id = storico.cliente ORDER BY storico.data DESC

    mannaggia la pupazza...

    (grazie a entrambi)

  6. #6

    mumble mumble...

    peccato che nn posso provare... ma hai già provato con delle group by o delle distinct??

    secondo me se provi a fare:
    SELECT *
    FROM clienti, storico
    WHERE clienti.id = storico.cliente
    GROUP BY clienti.id (esp: "cliente1")
    ORDER BY storico.data DESC

    dovrebbe uscirti un risultato tipo:
    cliente1 A
    cliente2 D
    cliente3 B
    cliente4 A
    cliente5 C

    e poi nella while del recordset testi il campo dello STORICO se 'A' lo scrivi in un'altro array...

    Prova e fammi sapere.
    Ciao
    :tongue:

  7. #7
    Utente bannato
    Registrato dal
    Jan 2004
    Messaggi
    110

    Re: mumble mumble...

    Originariamente inviato da piccolanomade
    secondo me se provi a fare:
    SELECT *
    FROM clienti, storico
    WHERE clienti.id = storico.cliente
    GROUP BY clienti.id (esp: "cliente1")
    ORDER BY storico.data DESC

    funziona piccola grande nomade!

    in effetti grazie al group by acchiappa un solo record per cliente, con l'ordinamento giusto è proprio quello che mi interessa...

    grazie!!

  8. #8

    bene bene

    sono contenta di esserti stata utile.

    Baci
    :tongue:

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.