Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168

    non riesco a far funzionare una join... doppia

    Ciao a tutti!
    Ho questa query perfettamente funzionante:

    codice:
    SELECT * 
    FROM incontri 
    INNER JOIN giocatori 
    ON incontri.IDgiocatore1=giocatori.IDgiocatore 
    WHERE [filtri vari...] 
    ORDER BY incontri.data ASC
    Vorrei fare in modo da aggiungere un'altra JOIN nell'ambito della stessa tabella, ovvero (per intenderci) qualcosa del tipo:

    codice:
    SELECT * 
    FROM incontri 
    INNER JOIN giocatori 
    ON incontri.IDgiocatore1=giocatori.IDgiocatore 
    AND incontri.IDgiocatore2=giocatori.IDgiocatore 
    WHERE [filtri vari...] 
    ORDER BY incontri.data ASC
    ...che, ovviamente, non mi funziona...

    Dove sta l'inghippo? Mi aiutate per favore?
    Grazie mille!
    t.

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao tizianina,
    ti da errore o non trova niente?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168
    se aggiungo...
    codice:
    AND incontri.IDgiocatore2=giocatori.IDgiocatore
    ...non trova niente, cioè, non mi da errori di alcun tipo, semplicemente non tira fuori niente...

    mentre invece se non aggiungo il codice scritto sopra, tira fuori solamente i risultati relativi al primo "ON"...

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    infatti la query è corretta... evidentemente nella tabella incontri non esistono IDgiocatore1 uguali a IDgiocatore2
    tu cosa vorresti trovare di preciso?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168
    la tua risposta mi fa mettere seriamente in dubbio la correttezza "concettuale" della mia "query"...
    Infatti, non dovrebbe accadere che un giocatore incontri se stesso...

    Provo a spiegare meglio la situazione...

    Ho due tabelle così organizzate (riporto solo i campi "significativi" a questo proposito)

    INCONTRI
    IDgiocatore1 (numerico)
    IDgiocatore2 (numerico)

    GIOCATORI
    IDgiocatore (contatore)

    Entrambi i campi della tabella INCONTRI fanno quindi riferimento allo stesso campo IDgiocatore della tabella GIOCATORI.

    Nella pagina che mi elenca gli incontri, su ogni incontro vorrei estrarre il nome dei due giocatori sulla base del rispettivo IDgiocatore...

    Da qui la necessità di una Join per estrarre, non solo il nome del giocatore n. 1 (che mi estrae correttamente) ma anche quello del suo avversario (che invece non mi estrae...)

    Ti ringrazio molto per l'aiuto e scusa se mi esprimo male ma... in teoria sarei una grafica...
    t.

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    un po' lo sospettavo che la query doveva essere diversa
    devi fare 2 JOIN con la tabella giocatori (uno per giocatore)
    codice:
    SELECT * FROM (incontri INNER JOIN giocatori ON incontri.IDgiocatore1 = giocatori.IDgiocatore) INNER JOIN giocatori AS giocatori_2 ON incontri.IDgiocatore2 = giocatori_2.IDgiocatore

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168
    Ho modificato la Query con il codice che mi hai indicato ma, nuovamente, non tira fuori nulla...

    Per completezza, ti riporto il codice che, all'interno del ciclo, mi estrae IDgiocatore, nome e cognome del secondo giocatore:

    <%=(RSincontri.Fields.Item("IDgiocatore2").Value)% >
    <%=(RSincontri.Fields.Item("Nome").Value)%>
    <%=(RSincontri.Fields.Item("cognome").Value)%>

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    allora...
    mettiamo che tu voglia stampare nome, cognome e id di giocatore1 e giocatore2
    la query sarebbe
    codice:
    SELECT incontri.IDgiocatore1, giocatori.nome, giocatori.cognome, incontri.IDgiocatore2,  giocatori_2.nome AS nome2, giocatori_2.cognome AS cognome2
    FROM (incontri INNER JOIN giocatori ON incontri.IDgiocatore1=giocatori.IDgiocatore) INNER JOIN giocatori AS giocatori_2 ON incontri.IDgiocatore2=giocatori_2.IDgiocatore
    e nel ciclo
    codice:
    <%=(RSincontri.Fields.Item("IDgiocatore1").Value)%> 
    <%=(RSincontri.Fields.Item("nome").Value)%> 
    <%=(RSincontri.Fields.Item("cognome").Value)%>
    incontra
    <%=(RSincontri.Fields.Item("IDgiocatore2").Value)%> 
    <%=(RSincontri.Fields.Item("nome2").Value)%> 
    <%=(RSincontri.Fields.Item("cognome2").Value)%>
    se non ti stampa niente probabilmente non ci sono le corrispondenze giuste

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168
    FUNZIONA!!!

    Ho solo snellito la query per estrarre ulteriori campi, in questo modo:

    codice:
    SELECT incontri.*, giocatori.*, giocatori_2.nome AS nome2, giocatori_2.cognome AS cognome2 FROM (incontri INNER JOIN giocatori ON incontri.IDgiocatore1=giocatori.IDgiocatore) INNER JOIN giocatori AS giocatori_2 ON incontri.IDgiocatore2=giocatori_2.IDgiocatore
    ...e, stranamente (trattandosi di mia iniziativa), funziona lo stesso!

    Ti ringrazio moltissimo per l'aiuto e... la pazienza!

    t.

  10. #10
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da tizianina
    ...e, stranamente (trattandosi di mia iniziativa), funziona lo stesso!
    hehehehe brava

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.