MySQL +调整当前查询以从另一个表(每列)中获取其他数据

时间:2018-08-16 05:34:08

标签: php mysql

这是上一个主题的新问题/更新。 MySQL + Query to return all rows that have cols that are 'active' in another table

感谢成员@Nick的帮助,我正在使用PHP和MySQL通过查询返回一些数据

我目前需要帮助来调整当前查询,以便以某种方式从当前返回的行/数据中的另一个表返回替代数据。

以下是一些有关表设置的最新示例以及当前查询状态:

REXTESTER: http://rextester.com/RZXI72814

SQL FIDDLE: http://www.sqlfiddle.com/#!9/296b5/3

它目前可以按照我在上一个请求中概述的方式工作,但是一旦使用后,我意识到我错过了一个要求,事后看来,我觉得这很重要...大声笑(抱歉)

当前状态:(按预期工作) 查询返回'barbot_drinks'表中的所有行[其行中(1-15)由(每个3个cols)_dispenser#_code#和_dosage#组成。.在barbot_ingredients表中找到的每个行均处于活动状态。

如果_dispenser#_code#和_dosage#列中的任何一个为空,则整个“成分”均无效...并且空字段不计入...通常表示饮料配方的结尾(饮料只能含有最多15种成分)

示例: 如果饮料配方/条目只有2种“成分”(成分_1_分配器,配料_1_代码和配料_1_剂量和配料_2_分配器,配料_2_代码和配料_2_剂量)

VODKA和OJ

它会检查配料表,以查看barbot_ingredients表中是否同时存在VODKA和OJ条目并且处于活动状态。

这就是我们现在的位置。

我需要尝试做的是从-EACH- Ingredient_x_code列的barbot_ingredients中获取“ dispenser_order”值(每杯饮料可能为1-15)..对于返回的每种饮料。 (即:该成分饮料表中的所有成分均在成分表中并有效)

我正在解析每一行,并使用PHP从该查询的结果集中创建一个字符串。

我当前正在创建什么:

示例(螺丝驱动器饮料): (在被php脚本解析之后)

bottle = vdk:1,valve = oj:2000

或(行名称)

[配料_1_分配器] = [配料_1_剂量]:[配料_1_剂量],[配料_2_分配器] = [配料_2_代码]:[配料_2_剂量]

我需要构建的是这个

瓶= 1:1,阀= 1:2000

[ingredient_1_dispenser] = [### dispenser_order-匹配此设置的FROM_INGREDIENT表-=配料_1_code ####] :[ingredient_1_dosage],[ingredient_2_dispenser] = [### dispenser_order -匹配此设置的FROM_INGREDIENT表格-= Ingredient_2_code ###] :[ingredient_2_dosage]

即:(被php脚本解析后)

瓶= [### dispenser_order-匹配此设置的FROM_INGREDIENT表-= Ingredient_1_code ###] :1,

阀门= [### dispenser_order-匹配此设置的FROM_INGREDIENT表-= Ingredient_2_code ###] :2000

由于1到15个可能的列组合,所以当前时间很长,但是我还要求提供易于阅读的内容,因此我也可以理解和学习它。(就像我到目前为止!)。

让我知道我是否可以提供其他信息,或者我是否不清楚。我想提供完整的背景知识,工作代码的链接,以及我正在做/正在做的事以及我想要做的事的例子。

1 个答案:

答案 0 :(得分:1)

由于数据库未规范化,事情开始变得非常混乱。该查询将为您提供所需的结果。不幸的是,它对于SQLFiddle来说太大了……但是rextester似乎可以处理它-here is the new one

以下是输出:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M12,7c-2.76,0 -5,2.24 -5,5s2.24,5 5,5 5,-2.24 5,-5 -2.24,-5 -5,-5zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8z"/>
</vector>

这是更新的查询:

id  drink_id    drink_name      drink_image         drink_desc                  ingredient_1_dispenser  ingredient_1_code   ingredient_1_dosage     ingredient_1_dispenser_order    ingredient_2_dispenser  ingredient_2_code   ingredient_2_dosage     ingredient_2_dispenser_order    ingredient_3_dispenser  ingredient_3_code   ingredient_3_dosage     ingredient_3_dispenser_order
1   vdk_org     Screw Driver    screw_driver.jpg    Screw Driver description... bottle                  vdk                 1                       1                               valve                   oj                  2000                    1       
2   vdk_cran    Cape Cod        cape_cod.jpg        Cape Cod description...     bottle                  vdk                 1                       1                               valve                   cbj                 2000                    2   
3   dry_mrtn    Dry Martini     dry_martini.jpg     Dry Martini description...  bottle                  vdk                 2.5                     1                               bottle                  vrmth               .5                      7                               valve                   orgbit              200                     3