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

    Problema costruzione query: tre tabelle tre join ?

    EDIT : funziona benissimo, chiudete o cancellate pure ^_^


    Sono giunto alla fine : prima di tutto ringrazzio coloro che mi hanno aiutato, con la promessa di riguardarmi tutto con " piu calma " visto che ormai il tempo stringe.

    Come ultima cosa espongo questa domanda, un po' piu teorica che pratica.
    Dunque. Il mio database ha 3 tabelle , alloggi, prenotazioni ed utenti.

    codice:
    TABLE utenti {
    user_id   PK
    dati vari non importanti // li ometto
    grado // grado stabilisce al momento della registrazione se e' un utente proprietario di una struttura o se e' un utente che vuole prenotarla
    }
    
    TABLE alloggi {
    id_hotel PK
    dati non importanti // li ometto
    proprietario FK references utenti(user_id)
    }
    
    TABLE prenotazioni {
    id_prenotazione PK
    prenotante_id FK references utenti (user_id)
    struttura_id FK references alloggi (id_hotel )
    dati non importanti // li ometto
    stato // di default messa a no. Cambiera in si solo quando un proprietario gestira' personalmente la prenotazione
    }
    Adesso la domanda e' questa : vorrei costruire una query che mi dica, al relativo proprietario, quali suoi hotel sono prenotati e da quali utenti.

    Pensavo ad una query con 4 join, solamente che " su carta " l'ho sempre fatta in una certa maniera, ma con php e mysql credo di dover usare l'INNER JOIN.

    Che ne dite di una query fatta cosi :

    codice:
    Select * FROM utenti JOIN  alloggi ON utenti.user_id = alloggi.proprietario 
    INNER JOIN  prenotazioni ON alloggi.id_hotel =prenotazioni.struttura_id 
    INNER JOIN  utenti AS richiedenti ON richiedenti.user_id = prenotazioni.prenotante_id 
    WHERE le condizioni che voglio
    Teoricamente mi sembra corretta, solo che non ho ben capito cosa mi comportino gli inner join. In questo modo mi sembra corretta : un proprietario puo' visualizzare quali suoi hotel sono sotto prenotazione e devono ancora essere gestiti, e puo' visualizzare i dati dell'utente da cui e' partita la prenotazione.

  2. #2
    Utente di HTML.it L'avatar di dararag
    Registrato dal
    Jan 2008
    Messaggi
    434
    scusa, ma perchè non usi la dicitura "tabella.campo"?

  3. #3
    Come al solito ci si butta sui Join così...
    Avendo il manuale accanto cito Hugh Williams (che, per chi non lo sapesse è l'autore ):
    Si raccomanda di scrivere esplicitament i join in modo da includere la condizione nella clausula WHERE. Questa soluzione è più plita e sicura rispetto all'affidarsi all'operatore JOIN affinchè scopra quali attributi hanno lo stesso nome nelle due tabelle e consenta al DBMS di capire come effettuare il join
    Il saggio ha parlato :berto:
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

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.