Php 如何将一个表中的用户值查询到列标题并获取标题下的值? 处境
我有两张桌子:Php 如何将一个表中的用户值查询到列标题并获取标题下的值? 处境,php,mysql,Php,Mysql,我有两张桌子: SGL=单人房(房间内一人) DBL=双人房(房间里有两个人) TPL=三人(三人) 等等。(CHD=房间内的儿童;折扣入住率) clients表包含用户插入的值。tourprices表是客房类型的预设价格 问题: 是否有一种查询方法,可以将用户插入的roomtype与tourprices表的列标题进行比较,以便结果是该列标题下日期的价格 例如:用户希望在2012年2月27日的巡演中预订两个人(DBL)。如何编写查询以根据给定的参数提取200美元的费率 SELECT c.r
- SGL=单人房(房间内一人)
- DBL=双人房(房间里有两个人)
- TPL=三人(三人)
SELECT c.roomtype, t.SGL, t.DBL, t.TPL, t.QUD, t.CHD
FROM clients c, tourprices t
WHERE c.roomtype = ??????
谢谢 您可以使用
CASE
语句查看Roomtype
的值,并从Tourprices
中获取具有该类型的相应列以确定价格
SELECT c.Roomtype
, CASE
WHEN c.Roomtype = 'SGL' THEN tp.SGL
WHEN c.Roomtype = 'DBL' THEN tp.DBL
WHEN c.Roomtype = 'TPL' THEN tp.TPL
WHEN c.Roomtype = 'QUD' THEN tp.QUD
WHEN c.Roomtype = 'CHD' THEN tp.CHD
END AS RateOfTour
FROM Clients AS c
INNER JOIN Tourprices AS tp ON c.tourstart = tp.tourstartp
您可以使用
CASE
语句查看Roomtype
的值,并从Tourprices
中获取具有该类型的相应列以确定价格
SELECT c.Roomtype
, CASE
WHEN c.Roomtype = 'SGL' THEN tp.SGL
WHEN c.Roomtype = 'DBL' THEN tp.DBL
WHEN c.Roomtype = 'TPL' THEN tp.TPL
WHEN c.Roomtype = 'QUD' THEN tp.QUD
WHEN c.Roomtype = 'CHD' THEN tp.CHD
END AS RateOfTour
FROM Clients AS c
INNER JOIN Tourprices AS tp ON c.tourstart = tp.tourstartp
在程序中而不是在数据库中执行此操作要方便得多。您的注意事项?如果您将依赖类型的信息移动到一个单独的表中,每个日期+房间类型都有不同的行,则可以避免此问题。然后,您可以对Roomtype列执行普通联接。@barmar-实际上,我有过这样的设置,但即使使用了SELECT DISTINCT,非规范化排列也会导致查询出现多个结果。如果您得到多个结果,则可能是数据库结构错误,或者您的WHERE子句中没有所有必要的联接条件。exaclty。例如,Had在表格中重复多次SGL。在这里,只指示一次。Price可能会重复(虽然不太可能),但有一个巡更代码将其区分开来。在程序中而不是在数据库中执行此操作要方便得多。您的注意事项?如果您将依赖类型的信息移动到一个单独的表中,每个日期+房间类型都有不同的行,则可以避免此问题。然后,您可以对Roomtype列执行普通联接。@barmar-实际上,我有过这样的设置,但即使使用了SELECT DISTINCT,非规范化排列也会导致查询出现多个结果。如果您得到多个结果,则可能是数据库结构错误,或者您的WHERE子句中没有所有必要的联接条件。exaclty。例如,Had在表格中重复多次SGL。在这里,只指示一次。价格可能会重复(虽然不太可能),但有一个旅行代码将其区分开来。这个答案应该有效,但您确实应该考虑规范化您的数据库。@Mike,我不确定除了为每种房间类型制作一个单独的表外,如何进一步规范此价格表,但考虑到有26个旅行,每个巡演20多个日期,每个房间类型5个。。。那是2600张表。@mike我正试图按照你的建议修改我的数据库。问题:您建议的“room_types”表的标题下有哪些列标题“SGL,SGL_w_child,DBL,DBL_w_child,…”等等?(试图理解表格的用途)。。。抱歉,正如你可能推断的那样,我是一个完全的初学者,但我正在学习和理解。@shane房间类型可以有两列RoomTypeId和Description。然后你就可以有1='单身',2='有孩子的单身',3='双倍',等等…@亚当,谢谢。你介意我在这个问题上与你进一步合作吗?我想让这个项目运作起来,这样我就可以停止使用MS Excel作为数据库。这个答案应该可行,但是你真的应该考虑规范化你的数据库。@Mike,我不确定除了为每种房间类型制作一个单独的表外,我怎么可能进一步规范这个价格表,但是考虑到有26个旅行团,每个巡演20多个日期,每个房间类型5个。。。那是2600张表。@mike我正试图按照你的建议修改我的数据库。问题:您建议的“room_types”表的标题下有哪些列标题“SGL,SGL_w_child,DBL,DBL_w_child,…”等等?(试图理解表格的用途)。。。抱歉,正如你可能推断的那样,我是一个完全的初学者,但我正在学习和理解。@shane房间类型可以有两列RoomTypeId和Description。然后你就可以有1='单身',2='有孩子的单身',3='双倍',等等…@亚当,谢谢。你介意我在这个问题上与你进一步合作吗?我想让这个项目工作,这样我就可以停止使用MS Excel作为数据库。