0

我有两个没有任何关系或外键的表,我想在查询中组合两列。

 select   DISTINCT a.OdemeTuru, b.MAdi from odemeturu as a, 
 musteriler as b order by b.MID,a.OID

我可以从两者中获取值,但它是混合的并且不同的不起作用。

结果如下:

'Nakit', 'Ali' 'Veresiye', 'Ali' 'Kredi Kartı', 'Ali' 'Özel', 'Ali'
'Nakit', 'Ahmet' 'Veresiye', 'Ahmet' 'Kredi Kartı', 'Ahmet' 'Özel',
'Ahmet' 'Nakit', 'Cemil' 'Veresiye', 'Cemil' 'Kredi Kartı', 'Cemil'
'Özel', 'Cemil' 'Nakit', 'Furkan' 'Veresiye', 'Furkan' 'Kredi Kartı',
'Furkan' 'Özel', 'Furkan'

但是,我想要以下

'Nakit', 'Ali'
'Özel', 'Ahmet'
'Veresiye', 'Cemil'
'Kredi Kartı', 'Furkan'

我的查询中的错误在哪里?(表的行数相同)

编辑:对不起,我忘记了一些事情。不存在a.tarih

4

2 回答 2

2

我能想到交叉应用 2 个 4 行表以获得 4 行而不是 16 行的唯一方法是加入行号:

SELECT  a.OdemeTuru, b.Madi
FROM    (   SELECT  @a:= @a + 1 AS RowNumber, OID, OdemeTuru
            FROM    odemeturu,
                    (SELECT @a:= 0) AS a
            ORDER BY OID
        ) AS a
        INNER JOIN
        (   SELECT  @b:= @b + 1 AS RowNumber, MID, Madi
            FROM    musteriler,
                    (SELECT @b:= 0) AS b
            ORDER BY MID
        ) AS b
            ON a.RowNumber = b.RowNumber

odemeturu的行按 OID 排序,中的行musteriler按 MID 排序。第一行odemeturu与 的第一行连接,第二行与第二行连接musteriler,依此类推。这是相当随意的,但似乎符合您的标准。

您可以更改子查询的排序方式以更改结果。


SQL Fiddle 示例

于 2012-06-18T16:11:04.703 回答
0

如果您可以以某种方式加入两个表,那么您可能可以这样做:

select   DISTINCT a.OdemeTuru, b.MAdi from odemeturu a leftjoin musteriler b 
on a.OID = b.MID order by b.MID,a.OID a.tarih 

编辑:

如前所述,没有任何关系的表和 MID/OID 也不同;唯一可能的方法是使用UNIONlike获得所有不同的值

select DISTINCT OdemeTuru from odemeturu order by a.OID,a.tarih 
UNION
select distinct MAdi from musteriler order by b.MID 
于 2012-06-18T14:01:29.567 回答