phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

query crosstab o simile

Area di discussione relativa al linguaggio di programmazione web più conosciuto. Il forum è dedicato anche a MySQL, la piattaforma di database più utilizzata con il PHP.
Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: query crosstab o simile

Messaggio da Sir Xiradorn » 17/03/2016, 19:51

Pardon edit a volo

Codice: Seleziona tutto

/**
 * Connessione
 * Consiglio mysqli per compatibilità o addirittura PDO
 */

$sql =<<<"SQL"
SELECT SUM(KM) AS KM
FROM tabella
WHERE LINK LIKE '101'
AND (
    DA LIKE 'LocA' 
    OR DA LIKE 'LocB' 
    OR A LIKE 'LocD' 
)
SQL;

$result = @mysqli_query($sql);
Or let's do some more complicated. Qualcosa di più complesso ma più reale

Codice: Seleziona tutto

$sql =<<<"SQL"
SELECT SUM(KM) AS KM
FROM TAB
WHERE LINK LIKE 101
AND (
    -- QUESTA PARTE SI POTREBBE ANCHE CICLARE
    (DA LIKE 'LocA' AND A LIKE 'LocB') 
    OR (DA LIKE 'LocB' AND A LIKE 'LocC') 
    OR (DA LIKE 'LocC' AND A LIKE 'LocD') 
)
SQL;
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Avatar utente
Sir Xiradorn
Grafico
Grafico
Messaggi: 1659
Iscritto il: 11/08/2009, 12:41
Sesso: Maschio
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.6.15
Database: MariaDB 10.1.9
Località: Lontano....
Contatta:

Re: query crosstab o simile

Messaggio da Sir Xiradorn » 17/03/2016, 22:22

Ora scrivo un esempio di codice un po complicato ma dovrebbe servire allo scopo. Puo sembrare complicato e forse un po lo è ma se lo analizzate non è così complesso come appare. Non ho testato quindi non so se funziona ma è solo a scopo didattico diciamola così

Codice: Seleziona tutto

$start = "LocA";
$end = "LocD";

// range var optimize
$inizio = substr($start, 3);
$fine = substr($end, 3);

$sql_interna = "";
$first = 0;

$range = range($inizio, $fine);
$range_key = array_keys($range);

foreach($range_key as $rk) {
    $val_cur = $range[$range_key[$rk]];
    if (end($range_key) !== $rk) {
        $val_suc = $range[$range_key[$rk+1]];
    } else {
        $val_suc = $range[$range_key[$rk]];
    }

    if ($val_cur !== $val_suc) {
        $sql_interna .= "OR (DA LIKE 'Loc{$val_cur}' AND A LIKE 'Loc{$val_suc}') ";
    }
}

/**
 * connessione al DB
 * non tengo voglia di scrivere sta parte :D
 */

$sql =<<<"SQL"
SELECT SUM(KM) AS KM
FROM tabella
WHERE LINK LIKE '101'
AND (
    1 {$sql_interna}
)
SQL;

$result = @mysqli_query($sql);
Stesso di su ma con un foreach un po elaborato
Sir Xiradorn
Immagine
~ XDojo - Xiradorn Lab Division - xiradorn.it ~
~ GitHub - XiradornLab ~

Immagine
Stargate - phpbb 3.0.x || 3.1.x || 3.2.x

Rispondi

Torna a “PHP - MySQL”

Chi c’è in linea

Visitano il forum: Nessuno e 28 ospiti