我非常感谢您对我的任何反馈和时间。
我正在使用一个PHP页面来查询带有1个表的数据库并且似乎被卡住了。 SQL不是我的强项,所以我寻求一些帮助。我正在使用附带MYSQL的PHP工作。
数据库
我有一个表“Product”,其中包含:
1ID, 2Product Description, 3Price, 4Category, 5Size, 6Price-Category
我想运行一个查询来确定哪些产品符合尺寸(完全匹配)和Price-Catgory(等于或高于)。因此我考虑了以下过程:
A - run queries to identify different products by Category (one for Category A, one for Category B)
B - compare query A and B by Size and Price-Category
C - Display Results by ID for Category A
我想输出查询A产品的每个ID的结果:
1ID|2Product Description|3Price|4Category|5Size|6Price-Category|7Query B Details
1 Product 100 Cat 100 1 ID, Product. etc.
ID, Product. etc.
ID, Product. etc.
2 Product 200 Cat 100 2 ID, Product. etc.
ID, Product. etc.
ID, Product. etc.
关于如何构建这个的任何想法?
提前致谢!
我到目前为止尝试过的代码(我目前试图从两个表中获取它们,但最初它们只是一个!!!!)
$query = "SELECT betten.m3, betten.Shortcode, betten.CodePDT, betten.PVCons, betten.CAT, betten.size1, betten.size2, betten.m3, betten.SIZE, betten.PRICERANGE, som.CodePDT2, som.Shortcode2, som.PRICECLASS, som.PVCons2, som.CAT2, som.size1a, som.size2a, som.m3a, som.SIZETWO FROM betten LEFT JOIN som ON betten.m3 = som.m3a ORDER BY CodePDT ";
$result = mysql_query($query) or die(mysql_error());
// Print out the contents of each row into a table
while($row = mysql_fetch_array($result)){
echo "<tr><td>";
echo $row['CodePDT']. "</td><td>".$row['Shortcode']. "</td><td>". $row['PVCons']."</td><td>". $row['CAT']. "</td><td>". $row['SIZE']. "</td><td>". $row['m3']."</td><td>". $row['PRICERANGE']. "</td><td>". $row['CodePDT2']. "</td><td>". $row['Shortcode2']. "</td><td>". $row['PVCons2']. "</td><td>". $row['CAT2']. "</td><td>". $row['SIZETWO']. "</td><td>". $row['m3a']. "</td><td>". $row['PRICECLASS']. "</td><td>";
echo "</td></tr>";
}
更新:
这适用于GROUP_CONT。没有,我得到的结果,但逐行。使用GROUP_CONT我收到错误“检查与您的MySQL服务器版本相对应的手册,以便在'GROUP_CONCAT(som.S ....)附近使用正确的语法。
SELECT `betten`.*, `som`.*
FROM betten
LEFT JOIN som ON betten.m3 = som.m3a
WHERE SIZE LIKE SIZETWO
GROUP_CONCAT(som.Shortcode2) AS Dude
GROUP BY betten.CodePDT
ORDER BY CodePDT ASC
答案 0 :(得分:0)
$query = ("SELECT
r.rangename as rRangename, /* Get Ranges from Rangetable */
r.rangevalue as rRangevalue,
m.name as mName, /* Get Fields from main Products */
m.Code as mCode,
m.Range as mRange,
SUBSTRING_INDEX(GROUP_CONCAT(f.productcode ORDER BY f.index_id ASC SEPARATOR ','),',',3) as fCodes, /* Get Fields from Cross Selling and list them seperatly */
SUBSTRING_INDEX(GROUP_CONCAT(f.name ORDER BY f.index_id ASC SEPARATOR ','),',',3) as fNames,
SUBSTRING_INDEX(GROUP_CONCAT(f.range ORDER BY f.index_id ASC SEPARATOR ','),',',3) as fRanges
FROM
crossproducts f
JOIN /* Match main products with cross via m3 */
mainproduct m
ON
m.m3 = f.m3
JOIN /* Match ranges and assign values for cross */
ranges r
ON
r.rangename = f.range
JOIN /* Match ranges and assign values for main */
ranges s
ON
s.rangename = m.Range
WHERE /* Only get Items that are equal or higher price range */
r.rangevalue - s.rangevalue > -1
GROUP BY /* And finally group them by main Product Code */
m.Code;");