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

    Ordinamento corretto dati in base alla data

    Come metto in ordine correttamente in base alla data che appare in uno dei tre campi data :

    sqlfiddle.com/#!9/96bdf73/1

  2. #2
    se non spieghi il problema...

  3. #3
    e perché mai 3 agende (!) e una tabella appuntamenti.... non ti bastava la tabella degi appuntamenti?

  4. #4
    Quote Originariamente inviata da optime Visualizza il messaggio
    e perché mai 3 agende (!) e una tabella appuntamenti.... non ti bastava la tabella degi appuntamenti?
    Ormai il db è fatto , praticamente per ogni appuntamento c'è un luogo è una data , le altre due date sono null , io vorrei ordinare per data qualunque sia il luogo ...

  5. #5
    Quote Originariamente inviata da pippuccio76 Visualizza il messaggio
    Ormai il db è fatto , praticamente per ogni appuntamento c'è un luogo è una data , le altre due date sono null , io vorrei ordinare per data qualunque sia il luogo ...
    L alternativa sarebbe che per ogni record venga popolato un campo data invece che popolare il campo data_citta( e avere gli altri due campi data_citta null), ma è possibile

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quote Originariamente inviata da pippuccio76 Visualizza il messaggio
    Ormai il db è fatto , praticamente per ogni appuntamento c'è un luogo è una data , le altre due date sono null , io vorrei ordinare per data qualunque sia il luogo ...
    Scusa, ma questo non è una risposta. Se una cosa è fatta male allora bisogna rifarla ! Vedi, se le cose fossero state fatte in maniera corretta sin dall'inizio non porresti la domanda e avresti una query molto più snella.

    Comunque (sembra funzionare dai dati che hai postato)

    codice:
    Select appuntamenti_clienti.*,
    clienti.ragione_sociale,
    luogo_agenda.citta_agenda,
    agenda_cagliari.data as data_cagliari,
    agenda_olbia.data as data_olbia,
    agenda_sassari.data as data_sassari,
    orari_apertura.orario
    FROM appuntamenti_clienti
    JOIN clienti
    ON appuntamenti_clienti.id_cliente=clienti.id
    JOIN luogo_agenda
    ON appuntamenti_clienti.id_luogo_agenda=luogo_agenda.id
    LEFT JOIN agenda_cagliari
                  ON (appuntamenti_clienti.id_agenda= agenda_cagliari.id AND 
                      appuntamenti_clienti.id_luogo_agenda= 1 AND
                      agenda_cagliari.data>=NOW())
    LEFT JOIN agenda_olbia
                  ON (appuntamenti_clienti.id_agenda= agenda_olbia.id AND
                      appuntamenti_clienti.id_luogo_agenda= 2 AND
                     agenda_olbia.data>=NOW())
    LEFT JOIN agenda_sassari
                  ON (appuntamenti_clienti.id_agenda= agenda_sassari.id AND
                      appuntamenti_clienti.id_luogo_agenda= 3 AND
                     agenda_sassari.data>=NOW())
    LEFT JOIN orari_apertura
    ON
    (agenda_olbia.orari_apertura_id=orari_apertura.id AND 
                        appuntamenti_clienti.id_luogo_agenda= 2)
                        OR
    (agenda_cagliari.orari_apertura_id=orari_apertura.id AND 
                      appuntamenti_clienti.id_luogo_agenda= 1)
                       OR
    (agenda_sassari.orari_apertura_id=orari_apertura.id AND 
                      appuntamenti_clienti.id_luogo_agenda= 3)                   
    WHERE agenda_cagliari.data IS NOT NULL
     OR agenda_olbia.data IS NOT NULL
     OR agenda_sassari.data IS NOT NULL
    ORDER BY  
        CASE WHEN agenda_cagliari.data IS NOT NULL 
     THEN agenda_cagliari.data
     ELSE CASE WHEN agenda_olbia.data IS NOT NULL 
       THEN agenda_olbia.data 
       ELSE agenda_sassari.data 
       END
     END 
    LIMIT 3
    Capture20171102-001.JPG
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Scusa, ma questo non è una risposta. Se una cosa è fatta male allora bisogna rifarla ! Vedi, se le cose fossero state fatte in maniera corretta sin dall'inizio non porresti la domanda e avresti una query molto più snella.

    Comunque (sembra funzionare dai dati che hai postato)

    codice:
    Select appuntamenti_clienti.*,
    clienti.ragione_sociale,
    luogo_agenda.citta_agenda,
    agenda_cagliari.data as data_cagliari,
    agenda_olbia.data as data_olbia,
    agenda_sassari.data as data_sassari,
    orari_apertura.orario
    FROM appuntamenti_clienti
    JOIN clienti
    ON appuntamenti_clienti.id_cliente=clienti.id
    JOIN luogo_agenda
    ON appuntamenti_clienti.id_luogo_agenda=luogo_agenda.id
    LEFT JOIN agenda_cagliari
                  ON (appuntamenti_clienti.id_agenda= agenda_cagliari.id AND 
                      appuntamenti_clienti.id_luogo_agenda= 1 AND
                      agenda_cagliari.data>=NOW())
    LEFT JOIN agenda_olbia
                  ON (appuntamenti_clienti.id_agenda= agenda_olbia.id AND
                      appuntamenti_clienti.id_luogo_agenda= 2 AND
                     agenda_olbia.data>=NOW())
    LEFT JOIN agenda_sassari
                  ON (appuntamenti_clienti.id_agenda= agenda_sassari.id AND
                      appuntamenti_clienti.id_luogo_agenda= 3 AND
                     agenda_sassari.data>=NOW())
    LEFT JOIN orari_apertura
    ON
    (agenda_olbia.orari_apertura_id=orari_apertura.id AND 
                        appuntamenti_clienti.id_luogo_agenda= 2)
                        OR
    (agenda_cagliari.orari_apertura_id=orari_apertura.id AND 
                      appuntamenti_clienti.id_luogo_agenda= 1)
                       OR
    (agenda_sassari.orari_apertura_id=orari_apertura.id AND 
                      appuntamenti_clienti.id_luogo_agenda= 3)                   
    WHERE agenda_cagliari.data IS NOT NULL
     OR agenda_olbia.data IS NOT NULL
     OR agenda_sassari.data IS NOT NULL
    ORDER BY  
        CASE WHEN agenda_cagliari.data IS NOT NULL 
     THEN agenda_cagliari.data
     ELSE CASE WHEN agenda_olbia.data IS NOT NULL 
       THEN agenda_olbia.data 
       ELSE agenda_sassari.data 
       END
     END 
    LIMIT 3
    Capture20171102-001.JPG
    Funziona grazie

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.