Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    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

  2. #2
    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.