Visualizzazione dei risultati da 1 a 10 su 13

Visualizzazione discussione

  1. #1

    [MySQL] Problema JOIN unica tabella e logica particolare recupero dati granulare

    Salve,
    titolo dubbio perchè non so se è corretto dire "recupero dati granulare" MA vi illustro il problema che probabilmente risolvo con una singola query.

    Ho questa tabella strutturata così.

    Tabella X
    codice:
    +---+---------+----+------+----+-----+-------+------+
    | id | name   | f1 | f2   | f3 | tag | field | value |
    +---+---------+----+------+----+-----+-------+------+
    | 1  | test   | 13 |      |    |  A  |   C   |  1    |
    | 2  | test   | 13 | 10   |    |  A  |   C   |  2    |
    | 3  | test   | 13 | 10   |  5 |  A  |   C   |  3    |
    +---+---------+----+------+----+-----+-------+------+
    In pratica vado a salvare i valori (value) di alcuni campi (field) in funzione di name, f1 e tag.
    Ho però la possibiltà di salvare per la stessa terna di dati name, f1 e tag, altri valori in funzione di f2 e f3

    Ammettendo per esempio come nello schema che:
    name: test
    f1: 13
    tag: A
    Value = 1

    Nel caso però che:
    f2: 10
    Value = 2

    E infine che
    f2: 10
    f3: 5
    Value = 3

    Il mio problema è che vorrei fare una query che all'inserimento di valori errati di f2 OPPURE di f3, mi ritornasse il primo valore valido.

    ESEMPIO in pseudo codice:


    // recupera un valore in funzione del match dei valori $f1, $f2, $f3 e $tag nella tabella X
    // $f2 e $f3 sono entrambi opzionali
    // $f1, $tag e $field devono obbligatoriamente esistere (natural join)
    function get_value($f1, $f2, $f3, $tag, $value);


    get_value(13, 60, 20, 'A', 'C');
    // f2=60 e f3=20 non sono presenti quindi deve ritornare 1


    get_value(13, 10, 20, 'A', 'C');
    // f2=10 è prensete ma f3=20 non è presente quindi deve ritornare 2


    get_value(13, 10, 5, 'A', 'C');
    // tutti i valori f2, f3 sono presenti quindi deve ritornare 3


    E' possibile giocando un pò con LEFT join sulla sola tabella X ottenere un risultato come illustrato?
    Grazie mille, intanto continuo a fare test

    (p.s. con 3 query avrei risolto ma vorrei evitare inutile overhead)
    Ultima modifica di PazZII; 20-07-2014 a 22:26

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.