Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    Relazionare 3 tabelle tra di loro col comando JOIN

    Ragazzi salve, io ho 3 tabelle su un database, e vorrei utilizzare il comando join per relazionarle fra di loro:

    Tabella Annunci:

    id_annuncio
    descrizione
    testo
    prezzo
    data_inserimento

    Tabella Foto
    id_foto
    indirizzo

    Tabella Categoria
    id_categoria
    categoria


    Ecco, ovviamente mi baso principalmente sugli ID, io ho un modulo per inserire gli annunci e ogni volta che lo riempio e invio i dati, vengono inseriti i dati nelle rispettive tabelle e gli ID incrementano.

    Adesso vorrei stampare una cosa del tipo:

    data_inserimento indirizzo descrizione categoria prezzo

    es. Oggi 17.30 http://indirizzo..foto Audi TT Auto e Moto 7.800 E.

    Grazie anticipatamente..
    Con i sogni possiamo conoscere il futuro...

  2. #2
    le tre tabelle devono essere in relazione tra di loro e "poi" con il JOIN potrai estrarre i dati che ti pare. Ma l'essere in relazione e' fondamentale perche' il JOIN possa lavorare in modo efficace.

    nel tuo caso direi che nella tabella annunci debba trovare posto anche:

    id_foto
    id_categoria

    Pero' viene da pensare che la foto sia un attributo dello specifico annuncio e quindi mi pare inutile farci una apposita tabella.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Capito, grazie della risposta, però sintatticamente non riesco a capire come comporre la query.
    Con i sogni possiamo conoscere il futuro...

  4. #4
    Originariamente inviato da gaten
    Capito, grazie della risposta, però sintatticamente non riesco a capire come comporre la query.
    la composizione della query puo' essere per esempio:

    codice:
    select *
    from annunci
    inner join foto ON foto.id_foto = annunci.id_foto
    inner join categoria ON categoria.id_categoria = annunci.id_categoria
    where ... quello che ti pare
    come vedi verranno estratti tutti i dati dove ci sara' l'equi-join tra:

    foto.id_foto = annunci.id_foto
    in AND con:
    categoria.id_categoria = annunci.id_categoria

    ed in piu' nel where una possibile ulteriore scelta.... esempio:

    where categoria.categoria = 'SUV'

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Piero, come ho strutturato io le tabelle non va bene?

    Perchè ho visto qualche tutorial, e ho visto che si crea una apposita tabella "UNIONE" nella quale relazione gli id delle diverste tabelle:

    Esempio devo relazionare queste 3 tabele:

    id_annuncio
    descrizione
    testo
    prezzo
    data_inserimento

    Tabella Foto
    id_foto
    indirizzo

    Tabella Categoria
    id_categoria
    categoria

    Creo un'altra tabella Unione così strutturata:

    id_annuncio
    id_foto
    id_categoria

    poi mi stampo tutti i valori:

    codice:
    SELECT . . .
    FROM annunci, foto, categorie, unione
    WHERE annunci.id_annuncio = unione.id_annuncio, foto.id_foto = unione.id_foto AND categorie.id_categoria = unione.id_categoria;
    Magari mi dici se esiste un altro modo più efficace.. o va bene?..
    Grazie.
    Con i sogni possiamo conoscere il futuro...

  6. #6
    per andare bene lo andra' senz'altro, ma gli attributi di un singolo record annuncio non andrei a suddividerli in altre tabelle.

    Le categorie possono essere molte, ma sono in max numero finito ed abbinabili a qualsiasi annuncio. Quindi la tabella puo' vivere di vita propria.

    La tabella annunci puo' subire incrementi e decrementi a prescindere dalla categoria, ma sicuramente la foto di quell'annuncio sara' esclusivo attributo di quel record e non degli altri. Quindi perche' sprecare risorse per definire altrove il nome della foto?

    La tabella di unione serve per evitare la relazione molti a molti. Ma molti annunci possono avere una relazione molti a uno con categoria. In questo caso non e' possibile che lo stesso oggetto possa appartenere a piu' categorie. Se invece lo stesso oggetto potesse appartenere a piu' categorie allora serve una tabella di unione tra annunci e categoria in modo tale da ripristinare la condizione ottimale di molti a uno.

    La situazione molti a molti e' assolutamente da evitare perche' potrebbe rendere ingestibile il database intero. Cioe', ti potrebbe mettere in condizione di non poter estrarre con facilita' i dati che ti servono ed ogni query dovrebbe essere calibrata esattamente per i dati che intendessi evidenziare. Questo sarebbe una assurdita' informatica.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Piero ma io ho bisogno solo di alcuni dati che sono distribuiti nelle diverse tabelle, e non di tutti i dati...
    Con i sogni possiamo conoscere il futuro...

  8. #8
    Originariamente inviato da gaten
    Piero ma io ho bisogno solo di alcuni dati che sono distribuiti nelle diverse tabelle, e non di tutti i dati...
    selezione solo i dati che ti servono. Dov'e' il problema?

    select tab1.campo1 as uno, tab2.campo1 as due etc...

    l'importante e' tenere sempre presente che campi con nome uguale sulle diverse tabelle saranno sovrascritti dall'ultimo caricato. Quindi, se nel caso, usare l'alias (AS)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.