Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    SELECT di record diversi tra tabelle

    Salve amici devo fare una select tra due tabelle in cui vengano presi solo i record con il valore di un campo diverso cioè

    TABELLA_ORE: ID, ORA contiene degli orari, tipo 15.00, 15.30, 16.00 ecc
    TABELLA_APPUNTAMENTI: contiene i dettagli di appuntamenti medici ed il campo in comune è il campo ORA

    vorrei prendere tutte le ORE disponibili della TABELLA_ORE

    in pratica se trova nella TABELLA_APPUNTAMENTI il valore del campo ORA uguale ad uno dei valori TABELLA_ORE non me lo deve dare!

    Come posso fare?
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  2. #2
    se ho capito bene fai una join delle due tabelle e gli metti questa condizione

    where (TABELLA_ORE.ORA <> 15.00) and (TABELLA_ORE.ORA <> 15.00)

    Se hai problemi con le join,
    ho ti dai uno sguardo su cosa sono o più semplicemente trovi in access, il comando query
    dove graficamente ti fa aggiungere le tabelle, selezionare i campi che ti interesano e scegliere quali condizioni vuoi inserire

  3. #3

    avevo pensato

    Grazie...avevo pensato ad una INNER JOIN, ma quella mi tira fuori i record che hanno lo stesso valore di ORARIO degli appuntamenti... invece a me servono i record che NON HANNO lo stesso orario... escludendo quindi quelli con l'ora uguale...

    allora avevo scritto:

    SELECT *
    FROM OTTICA_APPUNTAMENTI INNER JOIN OTTICA_ORARI ON OTTICA_ORARI.ORARIO <> OTTICA_APPUNTAMENTI.ORA
    WHERE OTTICA_APPUNTAMENTI.DOTTORE = '"&Request.QuerySTring("ID_STAFF")&"' AND OTTICA_APPUNTAMENTI.DATA = '"&Request.QuerySTring("data")&"'"

    però non mi funziona!

    Se invece scrivo

    INNER JOIN OTTICA_ORARI ON OTTICA_ORARI.ORARIO = OTTICA_APPUNTAMENTI.ORA

    ovviamente mi da gli orari degli appuntamenti prenotati!

    Insomma, per capirci, a me serve di mostrare gli orari DISPONIBILI, escludendo quindi quelli già prenotati!
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  4. #4
    non so se ho capito bene come sono fatte le due tabelle..
    ma il tuo campo di raccordo è il campo ore? (la foreign key della tabella appuntamenti?)

    prova a spiegarti meglio, cmq se il campo di raccordo tra le due tabelle è solo ore puoi provare così (con beneficio di inventario):
    codice:
    SELECT 
        *
    FROM 
        tabella_appuntamenti AS ta LEFT JOIN tabella_ore AS to 
        ON ta.ore=to.ore
    WHERE
        to.ore IS NULL
    xxx

  5. #5

    no

    no non mi restituisce nulla perchè il wehere non può essere solo IS NULL visto che mi deve fare il controllo anche della data dell'appuntamento e del dotttore..

    Allora ascolta, forse mi ono complicato io la vita...

    guarda questo link...

    prenotazioni

    in pratica puoi scegliere l'orario DISPONIBILE... il problema è che mi mostra solo una prenotazione, mentre in realtà dovrebbero essere 4!

    Questo perchè il codice è:

    Codice PHP:
    <% if arrOrari(x) = (appuntamenti.Fields.Item("ORA").Valuethen %> 
       <
    td width="278" bgcolor="#FFCC00"><div align="right">[b]PRENOTATO[/b]</div></td
    <% Else %> 
       <
    td width="278"><div align="center">PRENOTA 
                            
    <input name="ORA" type="checkbox" id="ORA" value="<%=arrOrari(x) %>"
      </
    div></td
    <% 
    end if %> 
    </
    tr
    <%
    next 
    %>
                    </
    table>
                  </
    div>
                  <% else %> 

    tu che soluzione adotteresti?
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  6. #6
    'spetta, fammi capire:
    tu hai due tabelle: ora e appuntamenti.

    ora, se ho capito bene, è fatta così:

    ora
    ---
    8.00
    8.30
    9.00
    9.30
    ..
    .. (fino a fine orari prenotabili)

    e appuntamenti fatta così:

    codice:
    id    data        ora    dottore
    1    1/1/2007  9.30   dr pivetta
    2    1/1/2007  10.30   dr halzeimer
    .....
    e tu vuoi visualizzare una tabella di quel giorno con tutti gli orari, distinguendo quelli prenotabili da quelli già prenotati?
    xxx

  7. #7

    perfetto

    PERFETTO!
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  8. #8
    allora prova così:
    premetto che ho corretto le tabelle in questo modo (visto che mi hai chiesto come farei ):
    ora
    campi: idora (contatore), ora (testo)

    appuntamenti
    campi: idappuntamento (contatore), dataappuntamento (datetime), idora (numerico foreign key), iddottore (numerico foreign key)

    (questo presuppone che tu abbia un'altra tabella di anagrafica dei dottori)

    codice:
    SELECT
    o.ora, a.iddottore, COUNT(a.idapp) AS prenotato
    FROM 
    ore AS o LEFT JOIN appuntamenti AS a ON 
        (
        o.idora=a.idora 
        AND 
        a.iddottore=1 
        AND 
        a.dataapp=#16/01/2007#
        )
    GROUP BY o.idora, o.ora, a.iddottore
    ORDER BY o.idora ASC
    xxx

  9. #9

    oddio

    oddio una cosa più semplice???
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  10. #10
    beh, non è mica così complicata..
    se vuoi denormalizzare ed eliminare la tabella di anagrafica dei dottori (come avevi messo tu in origine) puoi correggerla così:
    codice:
    SELECT
    o.ora, COUNT(a.idapp) AS prenotato
    FROM 
    ore AS o LEFT JOIN appuntamenti AS a ON 
        (
        o.idora=a.idora 
        AND 
        a.dottore='dr pivetta' 
        AND 
        a.dataapp=#16/01/2007#
        )
    GROUP BY o.idora, o.ora, a.dottore
    quando scorri il recordset se prenotato è diverso da zero allora quell'orario per quel dottore in quella data è prenotato. di più semplice puoi assumere una segretaria e mettere sul sito il numero di telefono dove prenotare
    xxx

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.