Visualizzazione dei risultati da 1 a 5 su 5

Discussione: ricerca Concatenata

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69

    ricerca Concatenata

    Salve a tutti, espongo il problema.Ho queste tabelle in un DB MySQL
    ORDINI
    C1 C2
    21 prodotto1
    22 prodotto2
    23 prodotto2
    23 prodotto1
    23 prodotto4

    PRODOTTI
    C1
    marca prodotto prezzo
    A prodotto1 tot
    A prodotto2 tot
    B prodotto3 tot

    FORNITORI
    marca forn1 forn2
    A 40 30
    B 30
    C

    Vorrei fare in modo, una volta avuto l'ordine, di riuscire a risalire al prezzo d'acquisto del prodotto comprato. Segue parte di codice interessata
    Codice PHP:
    $query "SELECT num_ordine,COUNT(*),nome_completo,date_format(data_ordine,'%d/%m/%Y'),stato_ordine,prezzo,negozio,nome_prodotto,quantita FROM ordini WHERE stato_ordine='Pagato' OR stato_ordine='Confermato' GROUP BY num_ordine ORDER BY data_ordine DESC";
        
    $result mysql_query($query$cn);
    while (
    $rs mysql_fetch_array($result))
            {
    //SE L'ORDINE COMPRENDE UN SOLO PRODOTTO
               
    if($rs[1]==1)
               {
                    
    $rs[7]=str_replace("'","\'"$rs[7]);
                    
    $prezzonumber_format($rs[5],2,",",".");

                    
    //SELEZIONA DALLA TABELLA PRODOTTI IL PRODOTTO DELL'ORDINE
                    
    $cercaprod"SELECT product_sku, product_name,manufacturer_name FROM prodotti WHERE product_name LIKE '$rs[7]%'";
                    
    $result5 mysql_query($cercaprod$cn);
                    
    $src=mysql_num_rows($result5) ;
                    
    //SE NON RIESCO A TROVARE IL PRODOTTO SETTA IL CODICE A 0
                    
    if($src == 0)
                    { 
    $sku=0;}
            else 
            {
                    
    //SE TROVO IL PRODOTTO
                            
    $cerca mysql_fetch_array($result5);

                            
    $sku$cerca[0];
                            
    $marca=$cerca[2];
                    }    
                   echo 
    "<tr style=\"font-size:12px;font-family:\"verdana\"\"><td bgcolor=\"".$cell."\">

    "
    .$rs[3]."</p></td><td bgcolor=\"".$cell."\">

    <a href=\"viewdetail.php?id=
    $rs[0]\" target=\"_blank\">".$rs[0]."</a></p></td>
                    <td bgcolor=\""
    .$cell."\">

    <a href=\"viewprod.php?id=
    $sku\" target=\"_blank\">".$rs[7]."</a></p></td><td bgcolor=\"".$cell."\">

    "
    .$rs[8]."</p></td><td bgcolor=\"".$cell."\"><p align=\"center\">".$prezzo
                    
    ."</p></td></tr>";
            }
            } 
    In pratica io adesso vorrei che il programma, una volta trovato il prodotto, andasse a ricercare nella tabella fornitori la marca e mi stampasse il relativo prezzo
    Partendo dal presupposto che se scrivo "echo $marca;" la marca è stampata correttamente, dovrei fare una modifica di questo tipo
    Codice PHP:
    else 
            {
                    
    //SE TROVO IL PRODOTTO
                            
    $cerca mysql_fetch_array($result5);

                            
    $sku$cerca[0];
                            
    $marca=$cerca[2];
                             
    $sqlforn="SELECT * FROM fornitori WHERE marca='$marca'";
                             
    $invia mysql_query($sqlforn$cn);
                             
    $frn mysql_fetch_array($invia);
                             echo 
    $frn[0].$frn[1].$frn[2]ecc....;


                    }    
    Il problema è che nonostante fisicamente ci siano corrispondenzel'SQL non riesce a fare le giuste associazioni. Sapreste dirmi come mai
    e possibilmente come si potrebbe risolvere? GRazie dell'
    aiuto 

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    363
    Ma con una sola query tipo questa non esce nulla ???

    SELECT P.prezzo
    FROM PRODOTTI AS P
    INNER JOIN ORDINI AS O
    ON O.C2 = P.prodotto
    INNER JOIN FORNITORI AS F
    ON F.marca = P.marca
    WHERE O.C1 = CodiceOrdine

    [Nota: sintassi ANSI SQL-92]

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69
    Non l'ho capita, magari se me la potessi spiegare un attimino potrei anche testarla. Ma il punto è, daccordo che con un JOIN multiplo avrei lo stesso risultato con meno query, ma dov'è l'errore nel mio codice?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    363
    Molto probabilmente il tuo codice è corretto (non l'ho controllato), però solitamente è preferibile recuperare i dati con meno istruzioni SQL possibile, per ovvi motivi di performance e di pulizia del codice.
    Per il discorso dei join guarda un pò qui: http://www.w3schools.com/sql/sql_join.asp

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69
    Seguendo i suggerimenti sto provando ad usare il JOIN ma nonostante sembri essere tutto corretto continuo a non ottenere il risultato sperato

    tabella prodotti
    cod nome pr marca
    1 aa 4 A
    2 ab 3 A
    3 ac 3 B

    tabella fornitori
    marca forn1 forn2
    A tot tot
    B tot tot
    C tot

    Il campo marca della tabella fornitori è campo key

    SELECT prodotti.nome, prodotti.marca, fornitori.forn1, fornitori.forn2 FROM prodotti INNER JOIN fornitori ON prodotti.marca = fornitori.marca

    Questa query inserita direttamente in MySql mi restituisce 0 righe invece dovrebbe restituire: le righe in cui il campo marca in entrambe le tabelle risulta essere uguale, dov'è l'errore?

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.