join e json di MySQL

devo tabella come bellow

ProductTable

    +---------------------------------------------------+
    | id| itemName |itemColor|(some other specification)|
    +---------------------------------------------------+
    | 1 | item 1   | red     |        -------           |
    | 2 | item 2   | green   |  --------                |
    | 3 | item 3   | blue    |     -------              |
    +---------------------------------------------------+

tabella dettagliata

+----------------------------------+
|id|itemFrom|itemTo|rateFrom|rateTo|
+----------------------------------+
| 1|   1    |   3  |   1    |  30  |
| 2|   1    |   2  |   30   |  20  |
| 3|   1    |   1  |   3    |  2   | 
| 4|   2    |   1  |   5    |  3   |
| 5|   2    |   3  |   6    |  10  |
| 6|   2    |   2  |   6    |   5  |
| 7|   3    |   1  |   1    |   1  |
| 8|   3    |   2  |   5    |   3  |
| 9|   3    |   3  |   2    |   1  |
+----------------------------------+

ora diciamo $itemfrom="item 2" (usando $_ GET) Ho bisogno dell'output di json come bellow

{
"itemName":"item 1",
"itemcolor":"red",
"exchangeFromRate":"5"
"exchangeToRate":"3"
},{
"itemName":"item 2",
"itemcolor":"green",
"exchangeFromRate":"6"
"exchangeToRate":"5"
},{
"itemName":"item 3",
"itemcolor":"blue",
"exchangeFromRate":"6"
"exchangeToRate":"10"
}

qual è la query corretta per ottenere il nome dell'elemento di output, le specifiche e le tariffe? ho provato con "join" istruzione, ma non poteva configurarlo correttamente.

Bellow è il mio graffi

     $itemfrom=$_GET['itemfrom'];
     $qry="select id from productTable where itemName='$itemfrom'"
     $result=mysqli_query($conn,$qry) or die("error in selecting ".mysqli_error($conn));
     while($row =mysqli_fetch_assoc($result))
            {
                $itemFromID=$row['id'];
            }
     $finalqry="select P.itemName,
                       P.itemColor,
                       R1.ratefrom
                       R2.rateto 
                       from ProductTable P
                       Join ExchangeRateTable R
                       R1.ratefrom=?????
                       R2.rateto=???????";
    $finalResult = mysqli_query($conn, $finalqry) or die("Error in Selecting " .mysqli_error($conn));

    while($row =mysqli_fetch_assoc($finalResult ))
    {
        $exchangeToNameRates[] = $row;
    }

    $exchangeToNameRateArrey =  ['status' =>"true", 
                        "message"=> "Data fetched successfully!", 
                        'data' =>$exchangeToNameRates];

echo json_encode($exchangeToNameRateArrey );

En title : mysql join and json output

12 Comments:

  1. non hai bisogno di due query, è possibile utilizzare query come di seguito e unire le tabelle con connettore e condizione:

    SELECT  P.itemName,
            P.itemColor,
            R.rateFrom
            R.rateTo 
            from ProductTable P
            Join ExchangeRateTable R
            on R.itemFrom=P.id
            where P.itemName='$itemfrom'
    
    1. this is giving output { " itemName " : " item 2 " , " itemcolor " : " green " , " exchangeFromRate " : " 5 " " exchangeToRate " : " 3 " } , { " itemName " : " item 2 " , " itemcolor " : " green " , " exchangeFromRate " : " 6 " " exchangeToRate " : " 5 " } , { " itemName " : " item 2 " , " itemcolor " : " green " , " exchangeFromRate " : " 6 " " exchangeToRate " : " 10 " }
    1. sì a causa della vostra condizione $itemfrom = "item 2" se si rimuove l'ultima riga della query hai tutte le combinazioni
    1. forse il mio problema di spiegazione. sto creando un sistema di scambio. in passo precedente l'utente selezionare scambio da voce, che lo scambio da voce è $itemfrom, in questo passo l'utente selezionerà "scambio a" voce, questa interfaccia devo mostrare il nome dell'articolo, Scambio dal tasso (tale voce è selezionata sull'interfaccia precedente) cambio al tasso. cambio a e da tasso entrambi variano a seconda delle voci correnti
    1. quindi se remove last dove condizione quindi i tassi non vengono rilasciati sulla selezione precedente
    1. one more example , lets say items are ( a , b , c ) exchange rates are ( a to b = 2 to 3 ) , ( a to c = 2 to 1 ) , ( a to a = 2 to 2 ) , ( b to a = 4 to 3 ) , ( b to b = 5 to 4 ) , ( b to c = 3 to 2 ) , ( c to a = 5 to 4 ) , ( c to b = 4 to 3 ) , ( c to c = 2 to 5 ) .quindi, quando viene selezionato dal valore dell'articolo (b) sulle righe di passaggio precedenti, è necessario filtrare come dove dall'elemento è "b" come (b a = 4 a 3), (b a b = 5 a 4), (b a c = 3 a 2)

More similar articles:

  • MySQL join query con un solo record da tavolo unito, ordinato per data
  • MySQL: multiple Table Join - Conditional sulla join precedente
  • MySQL JOIN tra 2 tavoli
  • MySQL select - calo delle prestazioni dopo aver aggiunto il secondo join
  • MySQL non utilizza l'intero indice durante la combinazione di join e range
  • query MySQL che coinvolge cross join, unicità, ecc
  • MySQL - Aggiorna join & incremento
  • MySQL LEFT JOIN: tabella dei genitori limite
  • query MySQL ottiene tabelle null
  • ordinamento MySQL per data in query JOIN
  • ricerca MySQL con join su Tabella e Meta Data
  • MySQL Joining su dichiarazione IN
  • MySQL Unisciti a più righe come colonne
  • MySQL unire due tabelle alla relazione n: m
  • iscriviti al conteggio MySQL
  • query MySQL complessa per problemi specifici
  • MySQL > PHP - Problemi con la query di rielaborazione relativa alla funzione di authentification di log in, per includere nuovi set di utenti
  • MySQL join con limite 1
  • MySQL Left Outer Join o join interno
  • MySQL join su substring è lento
  • MySQL: selezionare problemi
  • MySQL seleziona dove limite, iscriviti dove
  • la tabella MySQL si unisce: più join alla stessa tabella ma con parametri diversi
  • MySQL join che mostra i membri della tabella a che sono vuoti nella tabella b ma non viceversa
  • MySQL unire tre tabelle (2 di loro simili)
  • MySQL sinistra join con tre tabelle
  • MySQL: più problemi di join
  • quale query MySQL può restituire un set di risultati che soddisfa tutti i criteri per esempio restituire tutte le foto che hanno queste parole chiave 'x'?
  • MySQL ripulire avendo con WHERE o JOIN
  • unire due tabelle con un diverso numero di righe in MySQL