我有独特的要求。我不知道它是我的表格结构问题还是其他一些问题,但我需要一个解决方案,我的输出结构更改或查询更改。
我有一个表,其中包含单个用户的两个字段的动态值。单个用户可以拥有该类型的多个记录。
下面的示例表
表名:tbl_parameters
parameter_id parameter_name
1 Current Location
2 Booked Location
3 Room Type
表名:tbl_paramter_data
id(auto_increment) user_id parameter_id parameter_value
1 10 1 Hyderabad
2 10 2 Delhi
3 10 3 Deluxe Room
4 11 1 Hyderabad
5 11 2 Bombay
6 11 3 A/C Room
7 12 1 Delhi
8 12 2 Bombay
9 12 3 Deluxe Room
10 13 1 Hyderabad
11 13 2 Delhi
12 13 3 Single Room
以上是我的两张桌子。这是一个酒店预订表。用户可以在印度任何地方预订酒店房间。所以,我存储在2个不同的表中。第一个表将包含我需要使用parameter_id存储的参数类型。第二个表包含每个用户的参数值。从他们预订的位置,他们预订的房间和剩余数据。还有一些其他参数。 **参数No是动态的。没有固定的参数,这就是我将单独的表维护为tbl_parameters的原因。
我的问题是如何获取
的数据如何编写查询以从现有表(tbl_parameter_data)获取上述数据?
或者我需要更改表格结构或存储方式吗?
答案 0 :(得分:0)
我认为这样做会有所帮助。 (尚未测试)但是所有都取决于您的查询将获得多大的复杂性(每个参数需要新的连接)
SELECT user_id
from tbl_parameter_data p1 JOIN
tbl_parameters pa1 ON p1.parameter_id = pa1.parameter_id
JOIN (tbl_parameter_data p2 JOIN
tbl_parameters pa2 ON p2.parameter_id = pa2.parameter_id)
ON p1.user_id=p2.user_id
WHERE pa1.parameter_name = "Current Location"
AND p1.parameter_value = "Hydrabad"
AND pa2.parameter_name = "Booked Location"
AND p2.parameter_value = "Bombay"
旧版本:
SELECT user_id
from tbl_parameter_data p1 JOIN
JOIN tbl_parameter_data p2 ON p1.user_id=p2.user_id
WHERE p1.parameter_id = 1
AND p1.parameter_value = "Hydrabad"
AND p2.parameter_id = 2
AND p2.parameter_value = "Bombay"