程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

使用 2 个 MSSQL 表中的值在 HTML/PHP 下拉列表中列出枚举字符串

发布于2021-10-23 03:31     阅读(1208)     评论(0)     点赞(14)     收藏(2)


我想在下拉选择中列出一个字符串,例如:

姓名 | 间隔数 | 间隔

字符串中的这 3 个值需要从 2 个 MSSQL 表中填充。现在,我将深入解释表格以及我想要在下拉列表中作为字符串的结果。

这是表1:

+-------------+------+
| PK_Table1_ID| Name |
+-------------+------+
|     1       | Name1|
|     2       | Name2|
|     3       | Name3|
+-------------+------+

表2:

+--------------+--------------+-----------------+-----------+
| PK_Table2_ID | FK_Table1_ID | IntervallNumber | Intervall |
+--------------+--------------+-----------------+-----------+
|      1       |      2       |        1        |    168    |
|      2       |      2       |        2        |    336    |
|      3       |      2       |        3        |    500    |
|      4       |      2       |        4        |    672    |
|      5       |      2       |        5        |    840    |
|      6       |      2       |        6        |    1000   |
|      7       |      3       |        1        |    168    |
|      8       |      3       |        2        |    500    |
|      9       |      3       |        3        |    1000   |
+--------------+--------------+-----------------+-----------+

我想我需要多个 SQLSELECT语句并将它们合并为一个字符串,以便为我的下拉列表填充它。

也许是这样的:

$sql = "SELECT Name FROM table1";
$sql2 = "SELECT IntervallNumber, Intervall 
    FROM table2 
    WHERE table1.PK_Table1_ID = table2.FK_Table1_ID";
$seperator = " | ";
$string = $sql . $seperator . $sql2;

输出字符串应详细如下:

echo "<option>" . $string . "</option>";

第一个选择选项:“Name2 | 6 | 168,336,500,672,840,100”

第二个选择选项:“Name3 | 3 | 168,500,100”

第三个值也需要是一个字符串。

最大的问题是如何正确声明 MSSQL 语句并将其组合到枚举中,仅在选择中,而不是在 SQL 列中,因为列是整数,不能nvarchar,.

任何建议我如何解决这个问题?


解决方案


你可以试试这个:

T-SQL 语句:

SELECT 
    A.name, 
    IntervallNumber = MAX(IntervallNumber),
    Intervall = STUFF((
        SELECT ', ' + CONVERT(VARCHAR(MAX), X.Intervall)
        FROM Table2 X
        WHERE B.FK_Table1_ID = X.FK_Table1_ID
        FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, '')
FROM Table1 A
JOIN Table2 B ON A.PK_Table1_ID = B.FK_Table1_ID
GROUP BY B.FK_Table1_ID, A.name

输出:

Name2 6 168, 336, 500, 672, 840, 1000
Name3 3 168, 500, 1000

笔记:

使用 SQL Server 2012 进行测试。




所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.qianduanheidong.com/blog/article/208449/bd581929ab904eed21fa/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0
收藏该文
已收藏

评论内容:(最多支持255个字符)