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

    [Access&Vbscript]query su piu tabelle ,risposta errata

    Ciao gente.
    Forse sono all'ultimo problema del mio sito prima della pubblicazione(dopo un anno e mezzo di lavoro) ,Ma è un problema che mi sta facendo impazzire da piu di 3 settimane ,il quale non riesco a capire dov'è il problema .
    Allora ho un database di nome DB.mdb
    contenete tre tabelle ,denominate: Clienti ,AnnunciF, AnnunciV

    in Clienti ho i seguenti campi
    - ID(contatore) - nome(testo) - indirizzo(testo) - tipo(testo) -

    in AnnunciF:
    ID_annunciof(contatore) - ID_Clienti(numerico) - annuncio_f(testo) - giornof(testo)- oraf(testo) - concertof(numerico) -

    in AnnunciV:
    ID annunciov(contatore) - ID_Clienti(numerico) - annuncio_v(testo)- giornov(testo)- orav(testo) - settimana(numerico) - concertov(numerico) -

    A questo punto vorrei far vedere i Clienti che hanno dei record associati alle tabelle annunciF e annunciV che abbiano come valore 1 nel campo concertif e concertiv
    Facciamo l'ipotesi che ho il database così compilato
    - ID - nome - indirizzo - tipo -
    - 1 - pippo - via ecc - discoteca -


    ID_annunciof - ID_Clienti - annuncio_f - giornof - oraf - concertof -
    - - - - - - 1 ------- 1- - - - - - blabla - - - - lunedi -- giorno ---- 1 ----



    ID_annunciov - ID_Clienti - annuncio_v - giornov - orav - concertov -settimana
    - - - - - - 1 ------- 1- - - - - - blabla - - - - lunedi -- giorno ---- 0 - - - - 12


    L'unica query(select) che ho partorito che funziona solo parzialmente è questa
    codice:
    SELECT *  FROM   ((Clienti tc left JOIN AnnunciF af ON (tc.ID = af.ID_Clienti and af.cinemaf='1' and af.giornof = 'lunedi' and af.oraf = 'giorno'))    inner JOIN AnnunciV av ON (tc.ID = av.ID_Clienti and av.cinemav = '1' and av.settimana = '12' and av.giornov = 'lunedi' and av.orav = 'giorno'))  ORDER BY tc.citta, tc.tipo, tc.nome
    Che come risultato ,nella tabella che ho costruito per la visualizzazione, mi riporta 0 record ,se consideriamo che il database compilato come nell'esempio sopra .invece vorrei ottenere
    ---nome----indirizzo----annuncio Fisso -----annuncio Variabile---
    ---pippo----via ecc---------blabla-------------________-----------

    Se invece nella tabella annunciv il campo concertov ha il valore di uno il risultato è:
    ---nome----indirizzo----annuncio Fisso -----annuncio Variabile---
    ---pippo----via ecc---------blabla-------------blabla-----------



    Se invece nella tabella annunciF il campo concertif ha il valore 0 il risultato è:
    ---nome----indirizzo----annuncio Fisso -----annuncio Variabile---
    ---pippo----via ecc---------_______-------------blabla-----------

    Quindi sembra che se non trova le condizioni nella tabella annuncioV non mi riporta il risultato della tabella annunciF

  2. #2
    Molto probabilmente non mi sono fatto capire.
    Supponendo di aver un databese con tre tabelle compilate così

    tabella Clienti
    - ID - nome - indirizzo - tipo -
    - 1 - pippo - via ecc - discoteca -

    tabella AnnunciF
    ID_annunciof - ID_Clienti - annuncio_f - giornof - oraf - concertof -
    - - - - - - 1 ------- 1- - - - - - blabla - - - - lunedi -- giorno ---- 0 ----


    tabella AnnunciV
    ID_annunciov - ID_Clienti - annuncio_v - giornov - orav - concertov -settimana
    - - - - - - 1 ------- 1- - - - - - blabla - - - - lunedi -- giorno ---- 1 - - - - 12

    Vorrei poter fare una select che mi faccia visualizzare tutti i clienti che hanno:
    ID uguale a id_clienti della tabella annunciF e
    Id Clienti uguale a id_clienti di tabella annunciV
    dove in tabella annunciV il campo concertov sia uguale a 1
    e anche in tabella annunciF il campo concertif sia uguale a 1

  3. #3

    sTO IMPAZZENDO :s

    Riapro questa discussione visto che si tratta dello stesso problema
    Riprovo ancora una volta a riproporre il mio problema che non capisco se sia possibile risolvere o meno

    Ho un Database.mdb
    Con dentro la tabella clienti e annunci

    Dentro Clienti ho i campi
    ID(contatore) , nome(text) , indirizzo(text)

    Dentro Annunci ho
    ID(contatore) , ID_Clienti(numerico) , cek1(num.) ,ann1(text),cek2(num),ann2(text).

    Adesso con una select di questo tipo :



    SELECT * FROM Clienti , Annunci WHERE Clienti.ID = Annunci.ID_Clienti and Annunci.cek1='1' or Annunci.cek1='1' "

    La risposta della select saranno tutti i record che hanno la corrispondenza Clienti.ID = Annunci.ID_Clienti e che abbiano anche una corrispondenza sul campo Annunci.cek1='1' oppure sul campo Annunci.cek1='1'

    Adesso ,per ottenere la risposta che voglio aggiungo due if quando richiamo i vari record


    codice:
    <td><%=(Re1cgl("NOME").Value)%></td>
    <td><%=(Re1cgl("INDIRIZZO").Value)%></td>        
    <td><% if (Re1cgl("cek1"))="1" then response.write(Re1cgl("ann1")) else response.write(null) end if %> </td>
    <td> <%if (Re1cgl("cek2"))="1" then response.write(Re1cgl("ann2")) else response.write(null) end if %> </td>


    In questo modo filtro il risultato dicendogli :che se cek1 è uguale a 1 fammi vedere il record ann1 se no ,non scrivere niente .La stessa cosa nel cek2 per ann2

    Adesso il mio problema avere lo stesso risultato ma avendo 3 tabelle nel database
    del tipo:
    Clienti ho i campi
    ID(contatore) , nome(text) , indirizzo(text)

    Annunci1
    ID(contatore) , ID_Clienti(numerico) , cek1(num.) , ann1(text)

    Annunci2
    ID(contatore) , ID_Clienti(numerico) , cek2(num) , ann2(text)

  4. #4
    Non posso che andare avanti ,visto che non trovo sbocchi

    Riprovando ad esporre il problema .Con un'altra domanda o con piu chiarezza.
    Ho un database
    con le tre tabelle
    Clienti :
    http://img440.imageshack.us/img440/6394/clienti.png
    AnnunciF
    http://img15.imageshack.us/img15/5425/annuncifb.png
    AnnunciV
    http://img694.imageshack.us/img694/1390/annunciv.png

    con questa select
    codice:
    "SELECT * FROM (Clienti inner JOIN AnnunciV ON Clienti.ID = AnnunciV.ID_Clienti) 
     inner JOIN AnnunciF ON Clienti.ID = AnnunciF.ID_Clienti 
    WHERE(AnnunciF.concertif='1' AND AnnunciF.oraf='giorno' AND AnnunciF.giornof='martedi')
     OR (AnnunciV.concertiv='1' AND AnnunciV.orav='giorno' AND AnnunciV.giornov='martedi' AND AnnunciV.settimana=14)"
    Adesso il mio dilemma è perche mi risponde così;
    http://img263.imageshack.us/img263/7246/risposta.png

    "Ho dimenticato nell'immagine di tabella Clienti l'utente due ma in realtà c'è"

    Perche mi riporta anche l'annuncio di tabella AnnunciV ,che ha come giorno lunedi?
    Perchè non tiene in considerazione il WHERE?
    Perchè non mi riporta il Cliente 2 che ha l'id associato e 1 ,su concertif ?


  5. #5
    Aggiornandovi sulla mia disperazione
    Vi riporto un'altra select che ho provato e il quale non capisco il suo comportamento ovviamente con tutti i dettagli del caso :


    Ho il mio database
    con le tabelle così compilate
    Clienti
    http://img697.imageshack.us/img697/2416/tabclienti.jpg


    Tabella AnnunciF
    http://img255.imageshack.us/img255/8393/tabannuncif.jpg



    Tabella AnnunciV
    http://img255.imageshack.us/img255/5750/tabannunciv.jpg

    Ho fatto questa SELECT :

    codice:
    SELECT *
    FROM (Clienti LEFT JOIN AnnunciF ON Clienti.ID = AnnunciF.ID_Clienti) LEFT JOIN AnnunciV ON Clienti.ID = AnnunciV.ID_Clienti
    WHERE (AnnunciF.concertif="1" AND AnnunciF.oraf="giorno" AND AnnunciF.giornof="lunedi") 
    OR (AnnunciV.annuncio_v="1" AND AnnunciV.settimana=14 AND AnnunciV.giornov="lunedi" AND AnnunciV.orav="giorno");
    Che mi riporta i seguenti record :
    http://img532.imageshack.us/img532/4562/query.jpg


    Adesso il problema è che non mi riporta il record con ID 1645 di tabella AnnunciV . che ha tutte le condizioni della WHERE

    Se pero in AnnunciV ci sarebbero stati due record con ID 2 così
    http://img535.imageshack.us/img535/6766/annunciv2.jpg
    quindi due ID 2 ma con il campo settimana diverso

    La risposta della select(citata sopra) è questa
    http://img709.imageshack.us/img709/5246/query2c.jpg

    Qualcuno puo illuminarmi ?

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.