在HTML/PHP下拉列表中列出枚举字符串以及来自2个MSSQL表的值

在HTML/PHP下拉列表中列出枚举字符串以及来自2个MSSQL表的值,php,html,sql-server,dropdown,Php,Html,Sql Server,Dropdown,我想在下拉选择中列出一个字符串,如: 名称|间隔编号|间隔 字符串中的这3个值需要从2个MSSQL表中填充。现在,我将深入解释这些表,以及我希望在下拉列表中以字符串形式显示的结果 这是表1: +-------------+------+ | PK_Table1_ID| Name | +-------------+------+ | 1 | Name1| | 2 | Name2| | 3 | Name3| +-------------+-

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

名称|间隔编号|间隔

字符串中的这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   |
+--------------+--------------+-----------------+-----------+
我想我需要多个SQL SELECT语句,并将它们合并到一个字符串中,以填充下拉列表

也许是这样的:

$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;
SELECT CONCAT(Name, ' | ', MAX(IntervallNumber), ' | ', GROUP_CONCAT(Intervall))
FROM table1 t1
JOIN table2 t2 ON t1.PK_Table1_ID = t2.FK_Table1_ID
GROUP BY t1.PK_Table1_ID
输出字符串应详细如下所示:

echo "<option>" . $string . "</option>";
第一个选择选项:名称2 | 6 | 168336500672840100

第二个选择选项:名称3 | 3 | 16850100

第三个值也必须是字符串

最大的问题是如何正确声明MSSQL语句,并将其仅在SELECT中组合到enum,而不是在SQL列中,因为列是整数,不能与、、一起使用nvarchar


有什么建议可以解决这个问题吗

您需要的SQL将如下所示:

$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;
SELECT CONCAT(Name, ' | ', MAX(IntervallNumber), ' | ', GROUP_CONCAT(Intervall))
FROM table1 t1
JOIN table2 t2 ON t1.PK_Table1_ID = t2.FK_Table1_ID
GROUP BY t1.PK_Table1_ID
编辑:上面是MySQL,但应该使用类似于更改此查询的内容

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

使用此功能,您可以在下拉列表中获取名称和间隔编号,您可以尝试以下操作:

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进行了测试。

确定以及如何获取列“intervall”所有值以及下拉列表中名称和IntervallNumber旁边的相同FK_Table1_ID枚举?$SQL=选择a.NAME+|+b.IntervallNumber+| b.intervall从表b左连接表a到a.PK_Table1_ID=b.FK_Table1_ID,其中a.PK_Table1_ID=b.FK|Table1|ID;我尝试了链接中的代码,但出现了错误:选择rop.PK_Table1_ID,rop.Name,ropp.IntervallNumber,Intervall=STUFF SELECT','+ropp.Intervall,从Table2 ropp中选择rop.PK_Table1_ID=ropp.FK_Table1_ID作为XML路径,TYPE.value','NVARCHARMAX',1,1,从表1 rop JOIN table2 ropp ON rop.PK_Table1_ID=ropp.FK_Table1_ID按rop.NAME排序这就是为什么我说的将看起来像这样,然后链接到替换组的位置_CONCAT,很抱歉我目前无法调试sql server OK我看到了问题解决方案对我没有用,因为它只考虑基于sql的输出结果,如果列是nvarchar,但最后一列Intervall是int,那么我不能在她的内部枚举它。所以我需要一个组合在PHP中的soloution字符串您的SQL server版本是什么?通常的经验法则是,总是有一个SQL语句来代替合并两个选择。SQL查询功能非常强大。完美,这就是我要找的。谢谢你,先生。