Как сопоставить значение столбца с именем столбца? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь получить значение из таблицы shipping_charge. У меня есть две таблицы: одна таблица pincode, вторая таблица shipping_charge. Когда пользователь вводит пин-код, я выбираю данные из таблицы pincode, чтобы проверить зону. Итак, я не могу понять, как сопоставить извлеченное значение 'zone', чтобы получить стоимость доставки из таблицы shipping_charge. Стоимость доставки указана в столбцах city и metro. Я приведу таблицу, например.

Вот моя pincode таблица:

______________________
|id|pincode|cod|zone |
----------------------
|1 |100001 | Y |city |

|2 |100002 | N |City |

|3 |100003 | N |metro|

|4 |100004 | Y |City |

|5 |100005 | Y |City |

----------------------

Вот моя shipping_charge таблица:

________________________
|id|pro_code|city|metro|
------------------------
|1 |pro0001 |100 |150  |

|2 |pro0002 |50  |100  |

|3 |pro0003 |150 |200  |

|4 |pro0004 |100 |120  |

------------------------

Я пробовал только этот код, чтобы получить зону

$result= $this->connect()->query("SELECT * FROM wm_pincode WHERE 
pincode='$pincode'");
    if($result->num_rows>0){
        $row=$result->fetch_assoc();
        $zone =$row['zone'];
    }

Если пользователь введет pro_code= pro0002 и pincode=100003, тогда получит zone=metro и shipping charge=100.

Так как это.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

вы можете использовать union all

select charge,zone from (
select metro as charge,'metro' as namezone,pro_code from shipping_charge
  union all
select city as charge,'city' as namezone,pro_code from shipping_charge)
as DD,pincode sc where DD.pro_code='pro0002' and DD.namezone=sc.zone and sc.pincode=100003
0 голосов
/ 08 января 2019

Если вы хотите использовать два запроса:

$result= $this->connect()->query("SELECT * FROM wm_pincode WHERE 
pincode='$pincode'");
    if($result->num_rows>0){
        $row=$result->fetch_assoc();
        $zone =strtolower($row['zone']);
        $result= $this->connect()->query("SELECT $zone as shipping_charge_value FROM shipping_charge WHERE 
pro_code='$procode'");
        if($result->num_rows>0){
            $row=$result->fetch_assoc();
            $shipping_charge =$row['shipping_charge_value'];
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...