2

3 つのテーブルがあります。 TABLE 1 契約

-------------------
id  |  contract_name
--------------------
1      test name
2      test name 2
2      test name 3
4      test name 4

表 2 部屋

-------------------
id  |  room_name
--------------------
1      test name
2      test name 2
2      test name 3
4      test name 4

表 3 プロモーション

----------------------------------
 id  |  contracts_id  |   rooms_id
----------------------------------
 1          1,3            1,3,4
 1          2              1,2,3

いいえ、内部結合を実行して、データベースに保存されている配列の ID に従って契約と部屋の名前を取得しようとしています。これはまったく理想的ではないことはわかっていますが、データベースの設定を変更することはできません。これが私のクエリでやりたいことですが、明らかに不可能です。どうすればこれを達成できるかについて誰か考えがありますか?

mysql_query("SELECT pb.*, c.contract_name, r.room_name FROM promo_blackouts AS pb
INNER JOIN contracts as c ON c.contract_id IS IN pb.contracts_id
INNER JOIN rooms as r ON r.room_id IS IN pb.rooms_id 
WHERE pb.promo_id = '$promo_id'") or die(mysql_error());
4

1 に答える 1

8

このようなものをお探しですか?:

SELECT DISTINCT
    contract_name,
    room_name
FROM
    promos
INNER JOIN
    contracts ON FIND_IN_SET(contracts.id, contract_id) != 0
INNER JOIN
    rooms ON FIND_IN_SET(rooms.id, room_id) != 0
WHERE
    promos.id = 1
于 2012-11-08T01:18:42.003 に答える