SELECT *
FROM products2tecspecs as p2t, products_tecspecs as pt
WHERE p2t.fk_product_id = '%s' AND pt.pts_id = fk_tecspec_id AND pt.pts_id
IN (5275, 21, 5276, 5277, 5278, 49, 5279)
ORDER BY FIELD(pts_id, 5275, 21, 5276, 5277, 5278, 49, 5279)
これを選択すると、特定の ID が見つかり、必要な順序で表示されます。しかし、私はこの関係に問題があります。foreach 関数で使用しており、7 つのループが必要です。問題はヌルじゃなくて、関連商品しか持ってこないこと。もちろん、それは問題ではありません。神に感謝しますが、私の場合、たとえば2つしかない場合、レイアウトが破壊されます。
次のようなことができる方法はありますか: フィールドが見つからない場合は、これを配置しますか?
リレーションを作成すると機能しますが、700 個の製品で行う必要があります...
私はこれを見つけましたが、NULLの問題ではないようです...
私もLEFT JOINで試しましたが、私が言ったように、関係が存在しない場合、NULLをもたらすことはできません...
私は盲目です
私はこれを見つけましたSELECT pts_name
FROM (
SELECT pts_name,
CASE pts_id
WHEN 5275
THEN 1
WHEN 21
THEN 2
WHEN 5276
THEN 3
WHEN 5277
THEN 4
WHEN 5278
THEN 5
WHEN 49
THEN 6
WHEN 5279
THEN 7
END AS sort_order
FROM products_tecspecs
WHERE pts_id
IN ( 5275, 21, 5276, 5277, 5278, 49, 5279 )
)a
ORDER BY a.sort_order ASC
。それはSELECT I WANTをもたらしますが、それでも私の目標を達成する方法を見つけることができませんでした...
結合して
SELECT *
FROM products2tecspecs AS p2t
LEFT JOIN products_tecspecs AS pt ON ( p2t.fk_tecspec_id = pt.pts_id )
WHERE p2t.fk_product_id =34
AND pt.pts_id
IN ( 5275, 21, 5276, 5277, 5278, 49, 5279 ) OR p2t.p2t_value IS NULL
ORDER BY FIELD( pts_id, 5275, 21, 5276, 5277, 5278, 49, 5279 )
LIMIT 40
しかし、うまくいきませんでした。IN
選択した分野を超えた結果をもたらしました。