0

我有一张表,其中包含与这样的 idpage 相关的产品:

+--------+-----------+-------------+-------------+
| idPage | idProduct | inputedName | inputedCode |
+--------+-----------+-------------+-------------+
|     25 |        60 | x           | 8924        |
|     26 |        65 | y           | 105555      |
|     26 |        70 | z           | 105555      |
|     27 |        33 | a           | 14151112    |
|     27 |        34 | a           | 14151112    |
|     27 |        22 | a           | 14151112    |
|     27 |        17 | b           | OS987456    |
|     27 |        18 | c           |             |
|     27 |        17 |             |             |
|     27 |        23 | a           | 14151112    |
+--------+-----------+-------------+-------------+

没有唯一的 id。

用户在表单上输入 InputedName 和 InputedCode。

我想在页面视图上做的是选择 InputedName x Inputed Code 的 DISTINCT 组合,并与所有相关项相交或内连接(或其他)以显示如下内容:

In idPage=27:
- a 141511112 (inputedName, inputedCode)
-- 33 (idProduct)
-- 34
-- 22
-- 23
- b OS987456
-- 17        
- c (null)
-- 18
- (null)(null)
-- 17

有没有一种很好的方法可以做到这一点,或者基本的方法是最好的?基本方式,我的意思是,我正在使用 PHP。我将首先选择 inputedName 与 inputedCode 的不同组合(我仍然不知道如何处理我的表),然后进入 PHP 的 while 命令,我将执行另一个查询。在这种情况下,它将执行 5 次查询。我不认为这是一个优雅的解决方案,但我知道 mysql 很强大,也许还有另一种方法。

4

1 回答 1

2

我对您的要求感到困惑,但让我试一试:

SELECT  inputedName, inputedCode, GROUP_CONCAT(idProduct)
FROM    sampleTable
WHERE   idPage = 27
GROUP BY inputedName, inputedCode
order by COALESCE(inputedname, 'z'),   -- this part is optional
         COALESCE(inputedCode, 'z')    -- this part is optional

SQLFiddle 演示(点击这里)

于 2012-08-15T16:13:34.707 回答