2012-06-18 5 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

Какие данные имеются в двух таблицах? (добавьте это в свой вопрос). Сколько строк в каждом? (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 

EDIT:

Как уже говорилось, без каких-либо отношений между таблицами и 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

Иды разные, но я хочу объединить их без аналогичного поля – unbalanced

2

Единственный способ, которым я могу думать, чтобы пересечь применить 2 таблицы 4 строк, чтобы получить 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, а строки в musteriler по заказу MID. Первая строка odemeturu соединена с первым рядом musteriler, вторая со вторым и так далее. Это довольно произвольно, но, похоже, соответствует вашим критериям.

Вы можете изменить порядок заказа подзапросов для изменения результатов.


Example on SQL Fiddle