2012-06-18 46 views
0

我有兩個沒有任何關係或外鍵的表,我想在我的查詢中組合兩列。SQL中不同的MySQL

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

+0

什麼是你的表的表結構'odemeturu'和'musteriler'? – Rahul

+0

museriler ==> MID(int),MAdi(nvarchar)odemeturu ==> OID(int),OdemeTuru(nvarchar) – unbalanced

+0

2表有哪些數據? (在你的問題中添加)。每個有多少行? (4我猜) –

回答

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也不同;唯一可能的事情將是獲得使用UNION所有值分別爲

select DISTINCT OdemeTuru from odemeturu order by a.OID,a.tarih 
UNION 
select distinct MAdi from musteriler order by b.MID 
+0

Rahul,沒有任何關係,像表a.OID = b.MID – unbalanced

+0

@HarunAbi,明白了,這就是爲什麼我特別提到'如果你可以加入你的表格# – Rahul

+0

ID是不同的,但我想結合他們沒有類似的領域 – unbalanced

2

我能想到的交叉應用的4行2個表中得到4行的唯一方式,而不是16就是加入一個ROWNUMBER:

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排序,並且由MID排序的musteriler中的行。 odemeturu的第一行加上第一行musteriler,第二行加上第二行等。這是相當武斷的,但似乎符合你的標準。

您可以更改子查詢的排序方式以更改結果。


Example on SQL Fiddle