根据同一页面的结果选择记录

时间:2018-02-01 14:36:02

标签: php mysql

我甚至不确定这是否可行,但感觉应该是......

我有3张桌子。

第一个生成产品代码并保存有关该产品的一些基本信息。

我需要能够将该表中的其他记录引用为产品代码的“子”成分。例如产品00001由产品00002和00003等组成。

ProductCodes:

id     name    medium
00001  test1   Other 
00002  test2   Raw
00003  test3   Raw
00004  test4   Other
00005  test5   Raw
00006  test6   Raw

如果产品可用作“主要”产品的“子”成分,则产品标记为原始产品。

我目前的方法是使用第二个表来引用'sub'成分代码以及'master'产品,例如 IngredientProductList:

id|BACode      |IngredientBACode  |Percentage
__________________________
1 |00001     |00002               |90
2 |00001     |00003               |5
3 |00004     |00002               |80
4 |00004     |00006               |20

第三个表格包含百分比信息,如有必要,可能会包含在第二个表格中。

我尝试过内连接,但是我看不到如何将连接建立在第一个sql查询的结果上。

$BACode=$_GET['BACode'];

// Attempt select query execution
$sql = "SELECT ProductCodes.id , ProductCodes.Supplier , ProductCodes.suppliers_code , ProductCodes.item_name , ProductIngredientList.BACode , ProductIngredientList.IngredientBACode , IngredientsList.BACode , IngredientsList.IngredientType , IngredientsList.IngredientName
FROM ProductCodes
LEFT JOIN ProductIngredientList ON ProductIngredientList.BACode = ProductCodes.id
LEFT JOIN IngredientsList ON IngredientsList.BACode = ProductIngredientList.IngredientBACode
WHERE ProductCodes.id = '$BACode'

我目前看不到树木的木材,但我不能继续下一步,直到我知道这是有效的,或者做出所有必要的修改以找到解决方法。

我正在尝试生成一个页面,其中包含产品信息作为标题,然后按百分比顺序列出的其他信息以及稍后可以添加的其他信息。我只是不确定我是否正确设置了表以及我应该使用什么类型的查询来访问数据。 谢谢你的帮助。

IngredientsList:

id |BACode |IngredientType |IngredientName |Allergen |FreeFromArtificalColours
51 |13582  |flour          |               |No       |Yes
53 |13583  |flour          |               |No       |Yes
54 |15386  |Modified       |               |No       |Yes

所需的布局:

BACode: BA0001 Item Name:test 

Ingredients: BA0002 Allergen Information
             BA0003 Allergen Information

**新代码遵循建议     

// create connection 
$connection = mysql_connect("localhost","username","password") 
or die("Couldn't make connection 1."); 

// select database 
$db = mysql_select_db("database", $connection) 
or die("Couldn't select database 1."); 

$BACode=$_GET['BACode'];
?>
<div class="box" id="settlement1">
        <?
            $query  = "SELECT * FROM ProductCodes WHERE id = '$BACode'";
            $result = mysql_query($query);

            while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                $item_name = $row['item_name'];
                $medium = $row['medium'];

            }
        ?>
        <div class="settlement-name">
          <? echo "
            <table border=1 width=700>
                <tr>
                        <th>Product Name </th>
                        <th>Product Code</th>
                        <th>Medium</th>
                </tr>
                <tr>
                        <td>$item_name</td>
                        <td>$BACode</td>
                        <td>$medium</td>
                </tr>
                <tr>
                        <th>14. Ingredient Name </th>
                        <th>Percentage</th>
                        <th>Country Of Origin</th>
                </tr>
         " ?>
        </div>

    </div>
    <div class="box" id="settlement2">
        <?
            $query  = "SELECT ProductIngredientList.id, ProductIngredientList.BACode, ProductIngredientList.IngredientBACode, ProductIngredientList.Percentage, ProductIngredientList.RecipeVolume, ProductCodes.id, ProductCodes.item_name, ProductCodes.COO 
            FROM ProductIngredientList 
            LEFT JOIN ProductCodes ON ProductIngredientList.BACode = ProductCodes.id
            WHERE ProductIngredientList.BACode = '$BACode'
            ORDER BY ProductIngredientList.Percentage";

            $result = mysql_query($query);

            while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
            {
                $IngredientBACode = $row['IngredientBACode'];
                $item_name = $row['ProductCodes.item_name'];
                $Percentage = $row['Percentage'];
                $COO = $row['ProductCodes.COO'];

            echo "


                <tr>
                        <td>$IngredientBACode $item_name</td>
                        <td>$Percentage</td>
                        <td>$COO</td>
                </tr>


            ";
            }

            echo "</table>";
        ?>

1 个答案:

答案 0 :(得分:0)

外键是你的答案。您想要在子产品表中引用产品,然后在IngredientProductList中创建另一个表,如ProductID,它引用Product表中的原始ID。