Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    183

    [PHP e mySql] Inner Join o simili

    Salve, premesso che sono alle primissime armi con PHP, mi sono da poco imbattuto su un problema che è probabilmente più relativo a mySQL che a PHP.. mi spiego:
    ho creato 2 tabelle..
    'squadre'
    IDS
    Nome_S (es. Milan.. Juve)

    'partite'
    IDP
    squadraA_P
    squadraB_P
    risultato_P

    ora avrei la necessita di creare una query che integri entrambe le tabelle, quindi di visualizzare una cosa tipo:
    Milan - Juve 3-2
    So che esiste il comando INNER JOIN che potrebbe risolvere..
    qualcuno sa aiutarmi??
    grazie

  2. #2
    La relazione tra le due tabelle la potresti fare tra:

    squadre.IDS e partite.squadraA_P - partite.squadraB_P

    in altre parole in "partite" non mettere il nome ma l'id che si trova nel campo squadre.IDS

    LA query:
    codice:
    SELECT partite.*
    from squadre
    INNER JOIN partite ON squadre.IDS = partite.squadraA_P
    WHERE squadre.nome_S = 'Milan'
    ovviamente se invece di:

    ON squadre.IDS = partite.squadraA_P

    che gioca in casa, metterai:

    ON squadre.IDS = partite.squadraB_P

    sceglierai chi gioca fuori casa.



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

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    183
    mmm.. nn credo di
    avere capito..
    codice:
    SELECT partite.* from squadre
    INNER JOIN partite ON squadre.IDS = partite.squadraA_P
    WHERE squadre.nome_S = 'Milan'
    in questo modo.. per richiamare i nomi di entrambe le sqaudre devo fare più di una query.. giusto? e poi.. sei sicuro che è corretta questa query? mi da errore.. o meglio.. non mi da risultati
    grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    183
    forse.. mi sono cmq espresso male..
    altre volte, lavorando in ASP con Access problemi di questo tipo li avevo risolti con query di questo tipo

    codice:
    Select *, (select nome_s from squdre where squadre.IDS=partite.squadraA_P) as SquadraA, (select nome_s from squdre where squadre.IDS=partite.squadraB_P) as SquadraB from Parite
    e la cosa funzionava.
    MySql invece mi da errore.. per questo ho pensato fosse il caso di buttarmi su INNER JOIN..

  5. #5
    Originariamente inviato da davasex
    in questo modo.. per richiamare i nomi di entrambe le sqaudre devo fare più di una query.. giusto? e poi.. sei sicuro che è corretta questa query? mi da errore.. o meglio.. non mi da risultati
    grazie
    Lo sai tu quello che hai nelle tabelle. Le premesse di come dovrebbero essere le ho messe su.

    Se guardi i risultati di una partita ti porterai sempre dietro anche l'altra squadra. Per cercare la squadra in entrambe le colonne (casa/fuori) potresti usare due inner join.
    codice:
    SELECT * 
    from squadre s
    INNER JOIN partite a ON s.IDS = a.squadraA_P
    INNER JOIN partite b ON s.IDS = b.squadraB_P
    WHERE squadre.nome_S = 'Milan'

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

  6. #6
    Originariamente inviato da davasex
    forse.. mi sono cmq espresso male..
    altre volte, lavorando in ASP con Access problemi di questo tipo li avevo risolti con query di questo tipo
    e la cosa funzionava.
    MySql invece mi da errore.. per questo ho pensato fosse il caso di buttarmi su INNER JOIN..
    Le query annidate le trovi solo a partire da mysql 4.1 ... ma sono proprio pochi i casi in cui non puoi risolvere anche con un JOIN e in cui servono proprio le query annidate. Esiste anche sempre la tabella temporanea volendo.


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

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    183
    Originariamente inviato da piero.mac
    Le query annidate le trovi solo a partire da mysql 4.1 ... ma sono proprio pochi i casi in cui non puoi risolvere anche con un JOIN e in cui servono proprio le query annidate. Esiste anche sempre la tabella temporanea volendo.
    grazie mille.. finalmente comincio a capire qualcosa.. cosa sono le tabelle temporanee? pensi cje potrebbero risolvere il mio problema? grazie

  8. #8
    Originariamente inviato da davasex
    grazie mille.. finalmente comincio a capire qualcosa.. cosa sono le tabelle temporanee? pensi cje potrebbero risolvere il mio problema? grazie
    Le queries annidate sono una selezione nella selezione.

    Una tabella temporanea viene popolata con una selezione, poi su questa tabella temp viene effettuata un'altra selezione. Tanto anche le select annidate fanno tabelle temporanee.

    Ma non mi pare sia il tuo caso.


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

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    183
    ok grazie mille per l'aiuto.. purtroppo ci metterò un po.. poi ti faccio sapere come è andata.. grazie

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    183
    Originariamente inviato da piero.mac

    codice:
    SELECT * 
    from squadre s
    INNER JOIN partite a ON s.IDS = a.squadraA_P
    INNER JOIN partite b ON s.IDS = b.squadraB_P
    WHERE squadre.nome_S = 'Milan'
    scusa.. potresti spiegarmi meglio questo codice? 'squadre s'.. '..'partite a'.. 'partite b'?

    grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.