Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [MySql]Select Union

  1. #1

    [MySql]Select Union

    Buon giorno.
    Ho 3 tabelle(tb_rubrica,tb_archivio,tb_evento), nelle quali i campi(data_appuntamento,data_esito_appuntamento) da interrogare sono identici.
    ho una pagina che mi fa da agenda,nel senso che mi appaiono i gg del mese corrente e a seconda che ci sia un record in una o tutte e 3 le tabelle per quel giorno, la casella del giorno del mese si colora di verde.
    Ora, ho notato che con la UNION qui sotto, ho il problema di visualizzare un record in due giorni differenti.
    codice:
    SELECT * FROM (
    SELECT id_meeting as id,dataeora_appuntamento,data_esito FROM tb_evento
    UNION
    SELECT id_rubrica as id,dataeora_appuntamento,data_esito FROM tb_rubrica
    UNION
    SELECT id_rubrica as id,dataeora_appuntamento,data_esito FROM tb_archivio
    ) as T
    WHERE 
    (dataeora_appuntamento like'".($_GET['meet']=="" ? date('Y-m') : $_GET['meet'])."%' 
    OR
    data_esito like'".($_GET['meet']=="" ? date('Y-m') : $_GET['meet'])."%')
    AND
    id_user=".$_SESSION['id_user']." ORDER BY dataeora_appuntamento ASC, data_esito ASC
    Ammettiamo che abbia un appuntamento per il (data_appuntamento)2013-09-01 e che il (data_esito_appuntamento)2013-09-02 debba concludere questo appuntamento.
    Praticamente ho Mario Rossi sia il 1° che il 2 settembre.

    Vorrei fare in modo che, se il campo data_esito_appuntamento <> '0000-00-00 00:00:00'
    prenda come unico giorno di riferimento il 2013-09-02, cosi da avere una sola visualizzazione e non due.
    Spero abbiate capito il mio problema.
    Grazie mille come sempre

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    231
    prova a fare un esempio concreto. Con un paio di record nelle tabelle.
    Se la risposta ti è stata in qualche modo di aiuto o ti va di supportarmi metti "mi piace" alla pagina a questo link

    https://www.facebook.com/blogprogrammatori

    Non ti costa nulla!!

  3. #3
    buon giorno.
    Questo è l'esempio:

    Primo caso:
    nominativo - data appuntamento - data esito appuntamento
    MRossi - 2013-09-01 10:30:00 - 0000-00-00 00:00:00

    Con la union cosi come posta, il giorno 1° settembre ho la casella colorata in verde quindi ok.

    Secondo caso:
    nominativo - data appuntamento - data esito appuntamento
    MRossi - 2013-09-01 10:30:00 - 2013-09-02 13:35:00

    In questo caso, ho la casella del 2 settembre colorata di verde, e apparentemente è ok.

    Ma,se il 1° settembre ad un'orario diverso, dovessi avere un altro appuntamento con altro tizio, mi fa vedere sia questo che quello con Mario Rossi.

    Quindi, vorrei far in modo di escludere la ricerca per "data appuntamento" solo nel caso in cui, il campo "data esito appuntamento" sia <> '0000-00-00 00:00:00'.

    Cosi si capisce meglio?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    231
    Per non mischiare capre e cavoli lasciamo stare colori rossi, verde e giallo...

    hai detto che hai 3 tabelle così:
    - tb_rubrica (id,dataeora_appuntamento,data_esito)
    - tb_archivio (id,dataeora_appuntamento,data_esito)
    - tb_evento (id,dataeora_appuntamento,data_esito)

    giusto?

    Come sono riempite le tre tabelle nel tuo caso critico? Inseriscimi i record per favore, se puoi.

    Qual è il risultato che vuoi ottenere dalla query?
    Se la risposta ti è stata in qualche modo di aiuto o ti va di supportarmi metti "mi piace" alla pagina a questo link

    https://www.facebook.com/blogprogrammatori

    Non ti costa nulla!!

  5. #5
    i record inseriti:
    tb_rubrica:
    id_rubrica - data appuntamento - data esito appuntamento
    130 - 2013-09-01 10:30:00 - 2013-09-02 10:30:00

    tb_archivio
    id_rubrica - data appuntamento - data esito appuntamento
    128 - 2013-09-01 10:30:00 - 2013-09-02 08:00:00

    tb_evento
    id_meeting - data appuntamento - data esito appuntamento
    240 - 0000-00-00 00:00:00 - 2013-09-02 08:00:00

    Questo è quanto.

    Avendo il campo "data_esito_appuntamento" <> da 0000-00-00 00:00:00 vorrei visualizzare i record solo per le date riportate in "data_esito_appuntamento", escludendo quelli nel campo "data_appuntamento".

    Grazie mille.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    231
    Originariamente inviato da ANTAGONIA
    i record inseriti:
    tb_rubrica:
    id_rubrica - data appuntamento - data esito appuntamento
    130 - 2013-09-01 10:30:00 - 2013-09-02 10:30:00

    tb_archivio
    id_rubrica - data appuntamento - data esito appuntamento
    128 - 2013-09-01 10:30:00 - 2013-09-02 08:00:00

    tb_evento
    id_meeting - data appuntamento - data esito appuntamento
    240 - 0000-00-00 00:00:00 - 2013-09-02 08:00:00
    perfetto!

    Avendo il campo "data_esito_appuntamento" <> da 0000-00-00 00:00:00 vorrei visualizzare i record solo per le date riportate in "data_esito_appuntamento", escludendo quelli nel campo "data_appuntamento".


    cosa dovrebbe restituire la tua query in questo caso?
    Se la risposta ti è stata in qualche modo di aiuto o ti va di supportarmi metti "mi piace" alla pagina a questo link

    https://www.facebook.com/blogprogrammatori

    Non ti costa nulla!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.