Visualizzazione dei risultati da 1 a 4 su 4

Discussione: quesito su una JOIN

  1. #1

    quesito su una JOIN

    Ciao a tutti,
    purtroppo non sono un maestro sulle JOIN e per questo mi rivolgo a voi

    Allora, poniamo che abbia una tabella di "amici" e una di "sommario" che piu o meno sono popolate in questo modo:


    #AMICI

    NICK1 | NICK2
    Riccardo | Antonio
    Pasquale | Francesco
    Francesco | Riccardo
    Riccardo | Giulia
    Valeria | Riccardo


    #SOMMARIO

    NICK | ARTICOLI |
    Riccardo | 11
    Antonio | 402
    Pasquale | 31
    Francesco | 2
    Valeria | 120
    Giulia | 9


    Ora, mi piacerebbe avere una classifica per numero di articoli dei soli amici di Riccardo.

    Considerando che il nick della tabella amici può essere o nel campo1 o nel campo2, come posso fare la JOIN????



    Grazie mille!
    Perchè uso Maxthon? | Mi piace questa chat

  2. #2
    Credo che questo non è questo il posto giusto.

    Tuttavia la query dovrebbe essere:

    Codice PHP:
    SELECT nick,articoli from sommario inner join amici on sommario.nick amici.nick1 or sommario.nick amici.nick2 where (amici.nick1 "riccardo" or amici.nick2 "riccardo") and sommario.nick != 'riccardo' order by desc 
    ma non l'ho provata! Giocaci un po'
    Promuovi il tuo business su PartnerTip

    Condividi informazioni sulle città del mondo su KooKooZa!

  3. #3
    Grazie mille, non sapevo che potevo usare l'operatore OR anche in quel punto della join.

    Un'ultima domanda ... poichè ho molti utenti nella tabella "SOMMARIO" a 1 e vorrei escluderli, ho messo un semplice WHERE articoli > 1 e fino a qui tutto bene.
    Il campo "articoli" ha un indice, ma provando a vedere con l'EXPLAIN come reagisce, noto con dispiacere che scansiona tutta la tabella, anzichè partire da quelli sopra l'uno sfruttando lo stesso indice.
    (Questo accade anche senza la JOIN ma con query semplice).
    La cosa che non capisco è che se aumento il valore di tanto (ad esempio 1.000) la scansione il mysql la fa bene, valutandola di tipo "range" e quindi sfruttando correttamente l'indice, scansionando cosi meno risultati.

    C'è un motivo??
    Perchè uso Maxthon? | Mi piace questa chat

  4. #4
    Riporto i dati dell'explain:

    EXPLAIN SELECT *
    FROM `pt`
    WHERE numero > 0

    id select_type table type possible_keys key key_len ref rows Extra
    1 SIMPLE pt ALL numero NULL NULL NULL 41336 Using where


    Se invece aumento il numero a 600

    EXPLAIN SELECT *
    FROM `pt`
    WHERE numero > 600

    id select_type table type possible_keys key key_len ref rows Extra
    1 SIMPLE pt range numero numero 4 NULL 4645 Using where


    Come mai???
    Perchè uso Maxthon? | Mi piace questa chat

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.