4

2 つのテーブルがusersあり、products

テーブルusersには accountBalance 列があります

テーブルusersスキーマ:

userId  accountBalance .........
1           500        .........
2           45000      .........
3           4238827    .........
.               .      .........
.               .      .........
.               .      .........

テーブルproductsに価格列があります

テーブルproductsスキーマ:

productId   price      .........
1           40000      .........
2           55000      .........
3           90000      .........
.               .      .........
.               .      .........
.               .      .........

これらのテーブルには関係がないため、共通キーで結合できません。私が知りたいのは、各ユーザーが購入できる製品を見つけて、次の期待される結果としてフォーマットすることです。

それexpected resultは:

userId  productIdsUserAffordToBuy
1       NUll
2       1*2
3       1*2*3
.       .
.       .
.       .
4

3 に答える 3

6

GROUP_CONCAT()単一の列内にリストを作成し、accountBalance >= price実際に実行できる条件に対して結合するために使用します (行を省略するのではなく、何も余裕がないユーザーLEFT JOINに戻る必要があります):NULL

SELECT
  userId,
  GROUP_CONCAT(productId) AS productIdUserAffordToBuy
FROM
  users
  LEFT JOIN products ON users.accountBalance >= products.price
GROUP BY userId
于 2012-08-15T01:33:44.767 に答える
5
select userid,accountbalance,group_concat(productid) as productaffordtobuy
from users cross join products 
where price<=accountbalance
group by userid

SQLフィドルはこちら>

于 2012-08-15T01:34:09.707 に答える
1

Cross Join何の関係もなく、またはid少しトリッキーです

select userid,accountbalance,productid as productaffordtobuy
from users 
cross join products 
where price<=accountbalance
group by userid
于 2015-03-25T03:50:38.820 に答える