我的 MySQL 查询不断创建重复条目。我认为这与我的加入或 ID 值有关。
我是 JOIN
的新手,我正在尝试做一个相当简单的 JOIN
和过滤器。
基本上我是在产品列表页面上过滤产品。
newCatCols
+----+-----------------+-------------+
| id | sku | name |
+----+-----------------+-------------+
| 1 | 670_apple | Black |
| 2 | 670_apple | Apple |
| 3 | 670_apple | Blush |
| 4 | 670_apple | Turquoise |
| 5 | 670_apple | Light Coral |
| 10 | 640_apple_black | Apple_Black |
| 22 | 347_blush | Lime |
| 33 | 347_blush | Turquoise |
| 44 | 347_blush | Gray |
| 55 | 347_blush | Yellow |
+----+-----------------+-------------+
newCatProds
+----+-----------------+--------+------+
| id | sku | cost | cat |
+----+-----------------+--------+------+
| 1 | 670_apple | 489.55 | swar |
| 10 | 640_apple_black | 458.99 | swar |
| 22 | 347_blush | 741.44 | sig |
+----+-----------------+--------+------+
如果自定义选择黑色,我希望它返回黑色、Apple_Black 和 Apple 的颜色。它只是重复列表:
// productslisting.php?cat=swar&filter=Black
$strColourGet=mysql_real_escape_string($_GET["filter"]);
$strCatGet=mysql_real_escape_string($_GET["cat"]);
if($strColourGet=="Black"){
$checkSQL=mysql_query("
SELECT * FROM `newCatProds`
INNER JOIN `newCatCols`
ON `newCatProds`.`sku` = `newCatCols`.`sku`
WHERE (
`name` = 'Black' OR
`name` = 'Apple' OR
`name` = 'Apple_Black'
)
AND `status`='1' AND `category` = '".$strCatGet."'
ORDER BY `newCatProds`.`rank` DESC");
}
虽然结果出现了两次。我能不能让它出现两次?
710 702_appleblack 139 sig 0 8 1 1 1243 702_appleblack Apple_Black
486 613_turq 139 sig 0 124 1 1 695 613_turq Black
463 379_sapphire2 139 sig 0 46 1 1 652 379_sapphire2 Black
504 670_apple 119 sig 0 176 1 1 607 670_apple Black
463 379_sapphire2 139 sig 0 46 1 1 658 379_sapphire2 Apple_Black
也许是一个团体?所以 379_sapphire2
应该只出现一次,因为它同时出现了?
最佳答案
这些都是不同的结果。仔细观察它们。
如果您想避免这种情况,请执行特定字段请求,而不是 SELECT * FROM
。
要只获得一个答案,您需要在 select 中将该字段指定为不同的,并创建一个 group_by 子句。您不能在选择参数中使用 *
创建组。
PS:我建议您像这样重写您的查询。这样更容易理解:
SELECT
DISTINCT( category )
FROM
newCatProds p
JOIN
newCatCols c
ON
p.sku = c.sku
WHERE
c.name IN ( 'Black', 'Apple', 'Apple_Black' )
AND status = 1
AND category = '" . $strCatGet . "'
GROUP BY
category
ORDER BY
p.rank DESC;
关于php - 由于 JOIN 相同的 ID,按组删除重复结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12931082/