Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1

    Join tabelle e query mysql

    Buongiorno a tutti,

    mi servirebbe un aiutino a completare questa pagina. Dopo n ricerche e vari tentativi non andati a buon fine mi rivolgo a voi.

    il codice è il seguente :

    <?php

    $st=mysql_query("SELECT COUNT(ID_CLIENTE) AS totale FROM utenti") or die(mysql_error());
    $row=mysql_fetch_assoc($st);
    $a= $row['totale'];

    for ($i=0; $i<=$a; $i++)
    {

    $query = "SELECT ID_CLIENTE, SUM(OLIO), SUM(SANSA), SUM(QUANTITA_ORDINE) FROM ordini WHERE ID_CLIENTE='$i'";

    $result = mysql_query($query) or die(mysql_error());

    // Print out result
    while($row = mysql_fetch_array($result)){
    echo "
    Cliente ". $row['ID_CLIENTE']. " ";
    echo "
    Totale Olive Consegnate = ". $row['SUM(QUANTITA_ORDINE)'];
    echo "
    Totale Olio = ". $row['SUM(OLIO)'];
    echo "
    Totale Sansa = ". $row['SUM(SANSA)'];

    echo "
    ";
    }}
    ?>

    Il primo problema è nella stampa dei risultati. Questa avviene correttamente ma in più vengono stampati anche dei valori del tipo:

    Cliente
    Totale Olive Consegnate =
    Totale Olio =
    Total Sansa =

    Cliente 20
    Totale Olive Consegnate = 1634
    Totale Olio = 252
    Total Sansa = 573

    La causa, ovviamente, è la mancanza di alcuni ID cliente che sono stati cancellati (nell'esempio il 19) e dei relativi altri valori.

    Inoltre vorrei che utilizzando la funzione JOIN tra le due tabelle utenti e ordini venga visualizzato non l'ID del cliente ma il suo nome e cognome. Ho trovato anche qui tanti esempi on line ma tutti con delle join che non includono nella select la funziona sum. Potete darmi delle dritte anche per questo problema?

    Grazie

  2. #2
    Ciao,
    per il primo problema puoi controllare se l'id non è nullo o pari a vuoto prima di mostrare i risultati.
    Per il secondo problema, assumendo che la tabella che contiene l'anagrafica del cliente sia
    Nome tabella: utenti
    Campi: id_cliente,nome_cliente,cognome_cliente...
    Puoi implementare la query in questo modo:
    Codice PHP:
    SELECT U.COGNOME_CLIENTE AS cognome,U.NOME_CLIENTE AS nome,SUM(O.OLIO) AS somma_olioSUM(O.SANSA) AS somma_sansaSUM(O.QUANTITA_ORDINE) AS somma_qty FROM ordini AS O
    LEFT JOIN utenti 
    AS U
    ON U
    .ID_CLIENTE=O.ID_CLIENTE
    WHERE O
    .ID_CLIENTE='$i'
    ORDER BY O.ID_CLIENTE 
    Poi, ovviamente, cambi il modo di mostrare i risultati:
    Codice PHP:
    ...
    while(
    $row mysql_fetch_array($result)){
    echo 
    "
    Cliente "
    $row['cognome']. " ".$row['nome'];
    echo 
    "
    Totale Olive Consegnate = "
    $row['somma_qty'];
    echo 
    "
    Totale Olio = "
    $row['somma_olio'];
    echo 
    "
    Totale Sansa = "
    $row['somma_sansa'];
    ... 
    Spero di essere stato utile.

    Saluti!
    --Cosimo
    MAIL: cosimo.g18@gmail.com

  3. #3
    Grazie tante....ce l'ho fatta ;-)

    ciao

  4. #4
    Scusa un ultima cosa,

    ho provato a ordinare per cognome inserendo ORDER BY U.COGNOME o semplicemente cognome ma non funge.

    mi dici cosa modificare?

    Grazie

  5. #5
    ORDER BY U.COGNOME_CLIENTE

  6. #6
    Scusa ma ho dato per scontanta una cosa, i campi della tabella per me sono nome, cognome id_cliente

    quindi

    ORDER BY U.COGNOME

    Grazie comunque

  7. #7
    Scusa tanto ma sto facendo varie prove e ho scoperto un'altra cosa che cosi non va:

    se elimino l'ID_CLIENTE dalla tabella ordini, questo non viene visualizzato.....A me servirebbe invece che anche chi ha nessun ordine ma ha un ID_CLIENTE nella tabella utenti, venisse visualizzato con tutti i campi uguali a 0 o nulli.

    grazie

  8. #8
    Ok per l'ultima ho risolto con un RIGHT JOIN ;-)

  9. #9
    Ok ottimo!
    --Cosimo
    MAIL: cosimo.g18@gmail.com

  10. #10
    Mi rimane però il problema dell'order by. Dove devo intervenire?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.