我对SQL还是很陌生,并且正在使用PHP Generator软件进行快速的应用程序开发。
我有一个下拉列表,需要对它应用SQL语句进行查找,以填充下拉列表。
如果这是Javascript,那会很容易,但是不确定如何进行SQL。
我的桌子上有不同类型的项目,每个项目的类型可以是:
'P'
'B'
'O'
'S'
当我打开一个项目时,它会加载其信息,并且我需要根据项目类型填充此下拉列表。
我的表格中的下拉列表是Tinyint
。
对于所选项目,我在全局变量中有一个ItemID
(表中的PK),从那里检索该项目的Type
,应该使用一个简单的SELECT
工作:
SELECT ItemType
FROM TblItem
WHERE ItemID = [ItemID]
现在有了这个SELECT
,我有了我的ItemType。
现在,我需要根据ItemType填充下拉列表
使用Java语言,我会做类似的事情:
switch(ItemType) {
case 'B':
// code block
break;
case 'P':
// code block
break;
case 'S':
// code block
break;
case 'O':
// code block
break;
}
对于每个CASE代码块,我将放置一个不同的SELECT语句来填充我的下拉菜单,例如:
case 'B':
SELECT 0 AS TaskID, 'Installation' AS TaskName
UNION
SELECT 1 AS TaskID, 'Setup' AS TaskName
UNION
SELECT 2 AS TaskID, 'Feedback' AS TaskName
UNION
SELECT 3 AS TaskID, 'Customer' AS TaskName
case 'P':
SELECT 4 AS TaskID, 'Production' AS TaskName
UNION
SELECT 5 AS TaskID, 'Debug' AS TaskName
UNION
SELECT 6 AS TaskID, 'Review' AS TaskName
UNION
SELECT 7 AS TaskID, 'Network' AS TaskName
,依此类推,因此每次我打开Item的详细信息视图时,我都会在全局变量中检索ItemID
,然后应该使用此ID
来检索ItemType
如上所示,最后,在SQL中实现某种CASE
语句以根据Type填充下拉列表
谢谢
答案 0 :(得分:1)
SQL中的case语句用于非常不同的大小写:它会逐行切换大小写,而不是在查询级别。
我认为创建一个新表包含要存储在下拉列表中的项目会容易得多,然后使用itemId从该表中选择正确的行并填充下拉列表。像这样:
CREATE TABLE `dropdown` (
TaskID int(11) NOT NULL,
TaskName varchar(32) NOT NULL,
ItemID int(11) NOT NULL,
PRIMARY KEY(TaskID));
在这种情况下,您不必使用CASE语句并直接从表中选择所有必需的行。您甚至可以使用联接在一个查询中执行此操作。
答案 1 :(得分:1)
您可以使用INNER JOIN
来技巧,当您将此表与过滤后的表{合并在一起时,将所有可能的下拉记录记录在我称为tblDropDownItems
的表中,并带有一个额外的列引用ItemType。 {1}},您只有与检索到的项目类型相关的记录:
TblItem