【问题标题】:mysql join and json outputmysql join和json输出
【发布时间】:2019-06-02 04:34:32
【问题描述】:

我必须像下面这样摆桌子

产品表

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

ExchangeRateTable

+----------------------------------+
|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  |
+----------------------------------+

现在让我们说$itemfrom="item 2"(使用$_GET) 我需要像下面这样的 json 输出

{
"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"
}

获取输出项目名称、规格和费率的正确查询是什么?我尝试使用“join”语句但无法正确配置。

下面是我的抓痕

     $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 );

【问题讨论】:

    标签: mysql sql json join


    【解决方案1】:

    您不需要两次查询,您可以使用如下查询并使用连接器和条件连接表:

    SELECT  P.itemName,
            P.itemColor,
            R.rateFrom
            R.rateTo 
            from ProductTable P
            Join ExchangeRateTable R
            on R.itemFrom=P.id
            where P.itemName='$itemfrom'
    

    ** 更新:**

    您的第一个查询没问题,发现 $itemFromID 之后使用此查询您会看到所有交换结果:

    SELECT  P.itemName,
            P.itemColor,
            R.rateFrom
            R.rateTo 
            from ProductTable P
            Join ExchangeRateTable R
            on R.itemTo=P.id
            where R.itemFrom='$itemFromID'
    

    【讨论】:

    • 错误:“字段列表”中的未知列“R1.ratefrom”
    • 这给出了输出 { "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" }
    • 我的意思是根据 $_GET 值过滤输出
    • 是的,因为您的条件 $itemfrom="item 2" 如果您删除查询中的最后一行,您将获得所有组合
    • 也许我的解释有问题。我正在创建一个交换系统。在上一步用户选择从项目交换,从项目交换是$itemfrom,在这一步用户将选择“交换到”项目,这个界面我必须显示项目名称,从汇率(该项目在上一个界面上选择)兑换率。往返汇率都将根据当前项目而有所不同
    猜你喜欢
    • 2021-09-09
    • 1970-01-01
    • 2020-01-20
    • 2013-07-31
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多