-1

我有两张桌子:

表一

ida     valuea
1       a
2       b
3       c
1       d
1       e
2       f

表b

idb      valueb
1 
2

我将 valueb 作为组合框,如果只有 ida = current idb.and table b 变为,则需要从选择 valuea 的查询中获取它:

表b

idb      valueb
1        (a,d,e)
2        (b,f)
4

2 回答 2

3

很难确切地说出你在问什么,但我认为你要么只是在寻找一个简单的 INNER JOIN:

SELECT  TableB.IDB, TableA.ValueA
FROM    TableB
        INNER JOIN TableA
            ON TableA.IDA = TableB.IDB

或者您需要使用 IDB 将 tableA 中的行连接成一行。这样做的方法取决于 DBMS,因为您没有指定一个 DMBS,我已经回答了我所知道的许多问题。每个都有一个关于 SQL Fiddle 的示例。


SQL 服务器

SELECT  TableB.IDB,
        STUFF(( SELECT  ', ' + ValueA
                FROM    TableA
                WHERE   TableA.IDA = TableB.IDB
                FOR XML PATH(''), TYPE
                ).value('.', 'VARCHAR(MAX)'), 1, 2, '') AS ValueB
FROM    TableB

MySQL / SQLite

SELECT  IDB, 
        GROUP_CONCAT(ValueA) AS ValueB
FROM    TableB
        INNER JOIN TableA
            ON TableA.IDA = TableB.IDB
GROUP BY IDB

PostgreSQL

SELECT  IDB,
        ARRAY_AGG(ValueA) AS ValueB
FROM    TableB
        INNER JOIN TableA
            ON TableA.IDA = TableB.IDB
GROUP BY IDB

甲骨文

SELECT  IDB, 
        LISTAGG(ValueA, ', ') WITHIN GROUP (ORDER BY IDB) AS ValueB
FROM    TableB
        INNER JOIN TableA
            ON TableA.IDA = TableB.IDB
GROUP BY IDB
于 2012-07-02T12:55:24.240 回答
0
SELECT distinct valuea
FROM tablea
WHERE ida = @idb

@idb是一个包含您选择的值的参数

于 2012-07-02T11:46:30.880 回答