Visualizzazione risultati 1 fino 6 di 6

Discussione: Selezionare più record da tabelle diverse

  1. #1
    Guest

    Predefinito Selezionare più record da tabelle diverse

    ciao, mi sto impazzendo per capire una cosa.
    ho una serie di tabelle collegate da un campo comune:

    tb_partite
    id_partita
    id_teamA
    id_teamB

    tb_team
    id_team
    nome_team

    tb_report
    id_partita
    id_giocatore
    id_team

    tb_giocatori
    id_giocatore
    campi vari

    volendo selezionare il maggior numero di informazioni: i due team che si sono scontrati, creando anche la lista dei giocatori che hanno parteciapto, come si può fare con un'unica query?
    cioè, partendo dalla tabella report,
    vorrei prelevare in serie:
    partita -> team scontrati -> giocatori che componevano le suqadre.

    grazie.

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Potresti fare così:

    SELECT *
    FROM tb_report, tb_partita, tb_team, tb_giocatori
    WHERE tb_report.id_partita = tb_partita.id_partita AND tb_report.id_team = tb_team.id_team AND tb_report.id_giocatore = tb_giocatori.id_giocatore AND tb_report.id_partita = ...

    dove al posto dei puntini va l'ID della partita da esaminare. Sarà però tua cura formattare a dovere i record che tirerai fuori (stampando una sola volta i dati sulla partita e sui team che la componevano, ad esempio).

    Stammi bene...

    P.S. Se si riferisce a questo http://forum.altervista.org/showthread.php?t=51805 datti un'occhiata anche alla risposta che ti ho dato lì...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da dementialsite
    Potresti fare così:

    SELECT *
    FROM tb_report, tb_partita, tb_team, tb_giocatori
    WHERE tb_report.id_partita = tb_partita.id_partita AND tb_report.id_team = tb_team.id_team AND tb_report.id_giocatore = tb_giocatori.id_giocatore AND tb_report.id_partita = ...

    dove al posto dei puntini va l'ID della partita da esaminare. Sarà però tua cura formattare a dovere i record che tirerai fuori (stampando una sola volta i dati sulla partita e sui team che la componevano, ad esempio).

    Stammi bene...

    P.S. Se si riferisce a questo http://forum.altervista.org/showthread.php?t=51805 datti un'occhiata anche alla risposta che ti ho dato lì...
    sei troppo FIGO!
    ti ho già ringraziato li.
    sei davvero gentilissimo.
    sto creando uno schema del database ed aspetto, eventualmente un moderatore per avere indicazioni su dove continuare la discussione.
    perchè sono andato molto avanti e il databe credo sia completo.
    ora devo capire se l'ho creato con indetligenza e giusta logica MySQL o se va ottimizzato e poi capire come gestire le query per evitare che ad ogni inserimento-controllo, vengano eseguite 20-25 query esaurendo e stressando il server..
    grazie mille cmq.
    se dai una risposta generica qui o dall'altra parte, almeno saprai quando avrò risposto e quando avrò postato l'iiamgine.

    grazie mille cmq.

  4. #4
    Guest

    Predefinito

    ho provato ad usare la tua query per selezionare alcune informazioni, ma ottengo un output completamente sballato.

    Codice PHP:
    $query = mysql_query("SELECT * FROM report, partite, team, giocatori WHERE
    report.id_partita = partite.id_partita
    AND report.id_team = team.id_team
    AND report.id_giocatore = giocatori.id_giocatore
    AND partite.pendente='1'"
    ) or die(mysql_error());
    vorrei selezionare tutte le info possibili, per poi raggrupparle opportunamente, risalendo alle partite che hanno PENDENTE = 1. (tralsciando la ridondanza ed il NULL)
    fatto quello, dovrei poter gestire gli output in mdo opportuno, dovrei ottenere solo quanto mi interessa:

    Codice PHP:
    while($row = mysql_fetch_array($query)){
    //CONTROLLO RISULTATO
    $parziale = $row['risultato'];
    $num1 = trim(substr($parziale,0,strpos($parziale,'-')));
    $num2 = trim(substr($parziale,strpos($parziale,'-')+1,strlen($parziale)));

    //SUDDIVISIONE SQUADRE
    $id_giocatore = $row['id_giocatore'];
    $nome = $row['nome']." ".$row['cognome'];
    if(
    $arr == 0){
    $arr = $team;
    $sqA = $sqA." ".$nome."<br>";
    }
    else if(
    $arr == $team){
    $sqA = $sqA." ".$nome."<br>";
    }
    else if(
    $arr != $team){
    $sqB = $sqB." ".$nome."<br>";
    }


    //PAREGGIO
    if($num1 == $num2){
    echo
    "
    <table align=center>
    <tr><td>Partita del "
    .$row['data']."</td></tr>
    <tr><td></td><td align=center><b>Cosain,dún,sáigh</b></td><td></td></tr>
    <tr><td>
    $sqA</td><td align=center>$parziale</td><td>$sqB</tr></table><hr width='80%'>";
    }
    //VITTORIA SQUADRA A
    if($num1 > $num2){
    echo
    "
    <table align=center>
    <tr><td>Partita del "
    .$row['data']."</td></tr>
    <tr><td align=center><b>Fáinne óir ort</b></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td align=center><b>Póg ma thoin</b></td></tr>
    <tr><td>
    $sqA</td><td align=center>$parziale</td><td>$sqB</tr></table><hr width='80%'>";
    }
    //VITTORIA SQUADRA B
    if($num1 < $num2){
    echo
    "
    <table align=center>
    <tr><td>Partita del "
    .$row['data']."</td></tr>
    <tr><td align=center><b>Póg ma thoin</b></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td align=center><b>Fáinne óir ort</b></td></tr></b>
    <tr><td>
    $sqA</td><td align=center>$parziale</td><td>$sqB</tr></table><hr width='80%'>";
    }
    }
    //CHIUSURA WHILE
    ma invece mi escono molte più partite di quante in realtà non siano stte giocate, con incolonnamenti sballatie e matti!

    grazi4.
    Ultima modifica di lsdforum : 22-04-2006 alle ore 13.53.13

  5. #5
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Potresti intanto fare questa prova (sarà un po' pallosa): postare qui le tabelle (con tutti i loro record) di esempio report, partite, team e giocatori, e poi l'output che ti crea phpMyAdmin quando provi ad eseguire la query che hai scritto. Ovviamente limitati ai record sufficienti a generare confusione, se no facciamo notte...

    Esaminando questo, dovrei essere in grado di vedere dov'è l'errore...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  6. #6
    Guest

    Predefinito

    ecco ciò che mi chiedi:
    sono solo 2 partite. con due squadre da 3 giocatori ciascuna.
    la prima volta ho impostato un pareggio, la seconda una vittoria.
    con questo script che ho fatto io, ottengo un riempimento sequenziale.
    invece di ottenere direttamente 2 sole tabelle, ne ottengo 9.
    all'inizio c'è solo un giocaotre, poi un'ultriore tabella ne mostra 2, poi 3.
    poi appare l'altra tabella, e la riempie con il metodo detto sopra...
    ci sono quasi, forse ho messo la crazione in un ciclo sbagliato :D
    OUTPUT DA QUERY:


    TABELLA GIOCATORI


    TABELLA TEAM


    TABELLA PARTITE


    TABELLA REPORT



    PS: perchè nn riesco a postare gli allegati?!?!?!?!

    PPS: ecco la visualizzazione errata:
    Ultima modifica di lsdforum : 24-04-2006 alle ore 13.24.10

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •