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

    SQL, valori nella settimana corrente

    Salve a Tutti, 2 domande:

    1) Ho un campo giorno di tipo date. Come posso, in una query, selezionare i record della settimana attuale? (senza utilizzare PHP)

    2) Se ho queste due tabelle:

    codice:
    CREATE TABLE `tab_pazienti` (
      `id` int(6) NOT NULL auto_increment,
      `cod_fis` varchar(16) NOT NULL default '',
      `nome` varchar(50) NOT NULL default '',
      `cognome` varchar(50) NOT NULL default '',
      `data` date NOT NULL default '0000-00-00',
      `luogo` varchar(50) NOT NULL default '',
      `medico_associato` int(5) NOT NULL default '0',
      PRIMARY KEY  (`id`),
      UNIQUE KEY `cod_fis` (`cod_fis`)
    );
    codice:
    CREATE TABLE `tab_visite` (
      `id` int(11) NOT NULL auto_increment,
      `giorno` date NOT NULL default '0000-00-00',
      `orario` time NOT NULL default '00:00:00',
      `id_medico` int(5) default '0',
      `id_paziente` int(6) NOT NULL default '0',
      `tempo_min` int(3) NOT NULL default '0',
      `prestazione` text NOT NULL,
      `costo` double NOT NULL default '0',
      `stato` int(11) NOT NULL default '0',
      PRIMARY KEY  (`id`)
    );
    nella tabella "tab_visite", id_paziente è l'id di "tab_pazienti".
    Posso avere un ELENCO CRONOLOGICO DELLE VISITE SUUFRUITE DA CIASCUN PAZIENTE, utilizzando però UNA SOLA QUERY?
    (naturalmente vorrei che del paziente apparissero poi i dati anagrafici, non l'id, altrimenti è semplice)


    Grazie 1000, Stefano.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    1)


    codice:
    select * from tab_visite where
    giorno
    between 
    CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY
    and 
    CURDATE() + INTERVAL 6 - WEEKDAY(CURDATE()) DAY

    ti trova le visite nell'intervallo compreso tra lunedì e domenica della settimana corrente.
    Se anzichè domenica vuoi le visite nell'intervallo lun-ven basta che metti interval 4.

    2) E' sufficiente un inner join tra le due query

    codice:
    select tab_pazienti.*,tab_visite.giorno from tab_pazienti
    inner join tab_visite
    on tab_pazienti.id = tab_visite.id_paziente
    where tab_pazienti.id = x
    order by giorno desc
    con x uguale all'id che ti interessa.

  3. #3
    Grazie 1000, gentilissimo .

    ...questa JOIN devo studiarmela prima o poi. Ho sempre cercato di evitarla.

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.