Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [MySql] Problema accesso dati su due tabelle

    Buon pomeriggio ho due tabelle:
    TB_CALCIATORI
    TB_SQUADRE


    La TB_CALCIATORI ha questi campi:

    - id_calciatore
    - nome
    - cognome


    TB_SQUADRE
    - id_squadre
    - squadra
    - id_calciatore
    - squadra_appartenenza
    - squadre_militato

    E' possibile che un calciatore possa cambiare squadra un tot di volte durante l'anno.
    Quindi, nel campo squadra avrò tutte e 20 le squadre, nell'id_calciatore ovviamente l'identificativo relativo alla TB_CALCIATORI, e i campi squadra_appartenenza e squadre_militato, saranno in corrispondenza di ogni squadra contrassegnati con il valore 1 se fanno parte 0 se non fanno parte o non hanno militato e cioè

    TB_CALCIATORI

    id_calciatore | Nome | Cognome |
    30 | Antonio| Cassano |


    TB_SQUADRE
    id_squadra | squadra | id_calciatore| s_app | s_milit|
    1 | juve | 30 | 0 | 1
    2 | roma | 30 | 0 | 1
    3 | parma | 30 | 1 | 0

    Quello che devo ottenere è una scheda del calciatore strutturata in questo modo:
    Nome: Antonio
    Cognome: Cassano
    Squadra Appartenenza: Parma
    Militanza in altre squadre: Juve, roma, inter ecc ecc

    Eseguendo questa query però ottengo un tot di record in base all'id_calciatore presente nella TB_SQUADRE:
    codice:
    SELECT *
    FROM TB_CALCIATORI,TB_SQUADRE
    WHERE TB_CALCIATORI.id_calciatore = TB_SQUADRE.id_calciatore
    E di conseguenza la pagina mi restituisce tot schede.
    Che tipo di query devo strutturare?
    Grazie mille.

  2. #2
    Quote Originariamente inviata da ANTAGONIA Visualizza il messaggio
    Che tipo di query devo strutturare?
    Grazie mille.
    invece di SELECT * devi indicare i campi che ti interessa esporre..
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  3. #3
    per la TB_CALCIATORI i campi sono: nome,cognome,compenso
    per la TB_SQUADRE i campi sono: squadra, s_appartenenza, s_militanza

    quindi la SELECT dovrebbe essere:
    [code]
    SELECT TB_CALCIATORI.nome, TB_CALCIATORI.cognome, TB_CALCIATORI.compenso,
    TB_SQUADRE.squadra, TB_SQUADRE.s_appartenenza, TB_SQUADRE.s_militanza
    FROM
    TB_CALCIATORI,TB_SQUADRE
    WHERE
    TB_CALCIATORI.id_calciatore = TB_SQUADRE.id_calciatore
    [/code]

    Facendo in questo modo, però mi tira fuori 3 record per quel calciatore.
    Quindi?
    Mi ritroverei 3 schede.



  4. #4
    ok , allora raggruppa per calciatore (nome e cognome) e delle squadre in cui ha militato fai una concatenazione GROUP_CONCAT
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    oddio, perdonami concretamente come si fa?
    scusami ma sta cosa non l'ho mai fatta.

  6. #6
    non hai mai fatto un group by ?

    Immagino di si, invece per quanto riguarda la concatenazione qui un riferimento : http://stackoverflow.com/questions/1...rings-in-mysql
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  7. #7
    ok perfetto adesso provo, ti faccio sapere.
    Grazie mille

  8. #8
    Perfetto ci sono riuscito.
    codice:
    SELECT TB_CALCIATORI_2014.*,TB_SQUADRE_2014.squadra,
    GROUP_CONCAT(TB_SQUADRE_2014.squadraSEPARATOR',')asmilitato
    FROM
    TB_CALCIATORI_2014,TB_SQUADRE_2014
    WHERE
    TB_SQUADRE_2014.id_calciatore=TB_CALCIATORI_2014.id_calciatore
    AND
    TB_CALCIATORI_2014.id_calciatore=1
    GROUP BY TB_CALCIATORI_2014.nome
    Grazie mille dell'aiuto.
    Buona giornata.

  9. #9
    Quote Originariamente inviata da ANTAGONIA Visualizza il messaggio
    Perfetto ci sono riuscito.
    codice:
    SELECT TB_CALCIATORI_2014.*,TB_SQUADRE_2014.squadra,
    GROUP_CONCAT(TB_SQUADRE_2014.squadraSEPARATOR',')asmilitato
    FROM
    TB_CALCIATORI_2014,TB_SQUADRE_2014
    WHERE
    TB_SQUADRE_2014.id_calciatore=TB_CALCIATORI_2014.id_calciatore
    AND
    TB_CALCIATORI_2014.id_calciatore=1
    GROUP BY TB_CALCIATORI_2014.nome
    Grazie mille dell'aiuto.
    Buona giornata.
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  10. #10
    no purtroppo mi sono sbagliato.
    L'unica informazione che non riesco a tirare fuori in modo corretto è la squadra di appartenenza.
    ed inoltre la squadra di appartenenza la mette dentro le squadre dove ha militato.
    Ultima modifica di ANTAGONIA; 09-05-2014 a 11:56

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.