Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    58

    [mySQL] JOIN di più tabelle

    Buon sabato a tutti

    Vorrei sapere se è possibile fare join multiple...

    In pratica ho 5 tabelle relazionate tra loro, nella principale ricevo dei dati (gli id) partendo dai quali devo andarmi a ripescare nelle altre o il nome collegato a quell'id oppure il numero di record collegati a quello stesso id (con la funzione count())...

    Vorrei che come risultati mi venissero dati quindi non gli id, ma, ad esempio, i "titoli" pescati nelle altre tabelle...

    Per questo ho fatto una JOIN, è corretto?

    Tra due tabelle non trovo problema, ma come ci inserisco anche le altre?

    Per ora la mia chiamata è questa:

    codice:
    SELECT article.*, container.title AS cont FROM article JOIN container ON article.cont_id = container.id
    Vorrei ora unire anche le altre 3 tabelle...


  2. #2
    Utente di HTML.it L'avatar di aserena
    Registrato dal
    Feb 2003
    Messaggi
    310

    Re: [mySQL] JOIN di più tabelle

    Originariamente inviato da bugme.it
    Buon sabato a tutti
    Vorrei sapere se è possibile fare join multiple...
    Cerrrrto che puoi fare join multiple !!!

    SELECT article.*, [tutti i campi che vuoi mostrare delle varie tabelle ], container.title AS cont FROM ((((
    article INNER JOIN container ON article.cont_id = container.id)
    INNER JOIN tabella3 on article.campo = tabella3.campo)
    INNER JOIN tabella4 on tabella3.campo = tabella4.campo)
    INNER JOIN tabella5 on tabella4.campo = tabella5.campo)
    WHERE ...


    Ocio però, stai attento che joinando le tabelle nn fai altro che il prodotto cartesiano delle stesse, quindi se hai tante tabelle con tanti campi rischi di appesantire e nn di poco il sistema. Cerca di ottimizzare sempre il codice delle join, cioè nn inserirci dentro campi che poi nn ti serviranno ai fini pratici

    ciao
    La (!) è quella roba che in autunno si intristisce... perche': seccano i piselli, migrano gli uccelli, cadono i marroni, e se poi c'è anche la nebbia non si vede più un caXXo!! by Piero.mac @07/05

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    58
    codice:
    SELECT article. * , container.title AS cont, utenti.username
    FROM (
    (
    article INNER JOIN container ON article.cont_id = container.id
    )
    INNER JOIN article ON article.user_id = utenti.id
    )
    ORDER BY article.data_ins DESC
    Però mi da errore:
    #1066 - Not unique table/alias: 'article'


  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    58
    Originariamente inviato da bugme.it
    codice:
    SELECT article. * , container.title AS cont, utenti.username
    FROM (
    (
    article INNER JOIN container ON article.cont_id = container.id
    )
    INNER JOIN article ON article.user_id = utenti.id
    )
    ORDER BY article.data_ins DESC
    Però mi da errore:
    #1066 - Not unique table/alias: 'article'

    Che stupido...

    codice:
    SELECT article. * , container.title AS cont, utenti.username
    FROM (
    (
    article INNER JOIN container ON article.cont_id = container.id
    )
    INNER JOIN utenti ON article.user_id = utenti.id
    )
    ORDER BY article.data_ins DESC

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    58
    VVoVe:

    Ancora non ci sono :master:

    Vorrei che la chiamata a mysql mi restituisse anche il numero di pagine collegate a quell'articolo, usando quindi la funzione count()...

    Ci ho provato, ma se non ci sono pagine collegate all'articolo non mi sputa fuori nemmeno l'articolo dandomi uno zero come numero di pagine collegate...

    La query incrimnata per ora è:

    codice:
    SELECT article. * , container.title AS cont, utenti.username, count( pages.art_id ) AS page
    FROM (
    (
    (
    article
    INNER JOIN container ON article.cont_id = container.id
    )
    INNER JOIN utenti ON article.user_id = utenti.id
    )
    INNER JOIN pages ON article.id = pages.art_id
    )
    GROUP BY pages.art_id
    ORDER BY article.data_ins DESC
    Per dirla in breve, vorrei che mi restituisse sempre tutti gli articoli e contare il numero di pagine collegate (quindi mi dovrebbe restituire i dati dell'articolo anche se non ci sono ancora pagine collegate)



    Se no piglio l'id dell'articolo e faccio un'altra query nella tabella pages per contare quanti record mi interessano, però vorrei imparare a a fare tutto con una chiamata, per impretichirmi...


  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    58
    Funziona ben, però se non ci sono record nella tabella pages associati ad article non visualizza nemmeno i record di article...

    é possibili far visualizzare in ogni caso i record di article anche se non ci sono pagine associate?

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    58
    up

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,476
    Originariamente inviato da bugme.it
    Funziona ben, però se non ci sono record nella tabella pages associati ad article non visualizza nemmeno i record di article...

    é possibili far visualizzare in ogni caso i record di article anche se non ci sono pagine associate?
    Non ho porvato, ma leggevo da qualche parte che usando il LEFT JOIN ti visualizza anche i campi vuoti.


    ciao

    dies

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.