2015-08-11 2 views
0
mysql> select * from SC_rules; 
+--------+--------+--------+---------------+ 
| old_SC | new_SC | fee_JD | offer_id_Flag | 
+--------+--------+--------+---------------+ 
| 114 | 111 | 5.000 |    1 | 
| 114 | 310 | 6.000 |    1 | 
| 114 |  41 | 2.000 |    0 | 
+--------+--------+--------+---------------+ 

mysql> select * from offer_rules; 
+--------+--------+----------+-------+ 
| old_SC | new_SC | offer_id | price | 
+--------+--------+----------+-------+ 
| 114 | 111 |  10 | 1.000 | 
| 114 | 310 |  20 | 0.500 | 
+--------+--------+----------+-------+ 

Я хочу цену от SC_rules где offer_id_Flag = 0 и цена от offer_rules где offer_id_flag = 1 один раз выбрать.MySql: Несколько запросов, чтобы выбрать один столбец из другой таблицы

+0

Опубликовать свой ожидаемый результат –

+1

У вас нет поля под названием 'цена' в' SC_rules'. Желаемые результаты уточнят, что вы хотите сделать. –

ответ

0

Для этого вы можете использовать условное обозначение LEFT JOIN и COALESCE, чтобы получить первый результат, отличный от NULL.

Что-то вроде этого (не проверено):

SELECT COALESCE(o.price, sc.price) 
    FROM SC_rules sc 
    LEFT JOIN offer_rules o ON o.old_SC = sc.old_SC AND sc.offer_id_Flag = 1 

В принципе, получить price от вашего offer_rules таблицы (если она существует) в противном случае получить price от вашего sc_rules таблицы (кстати, этот столбец, кажется, отсутствует ваши исходные данные в вашем вопросе).

JOIN работает, сопоставляя строки в столбце old_SC, но вы должны изменить это значение в зависимости от того, какой столбец имеет первичный \ внешний ключ. Важной частью является соединение на sc.offer_id_Flag = 1, которое только делает соединение, когда значение флага равно 1 (как вам угодно).

+0

колонка цена в SC_rules является fee_JD – Nour

+0

выберите CONCAT (SC_rules.new_SC, ':', fee_JD) из SC_rules где SC_rules.offer_id_Flag = 0 объединение выберите CONCAT (offer_rules.new_SC, ':', цена) from offer_rules, SC_rules где SC_rules.old_SC = offer_rules.old_SC и SC_rules.new_SC = offer_rules.new_SC и SC_rules.offer_id_Flag = 1; – Nour

+0

- это выбор выше, правильный, если да, то о производительности, если у меня есть огромное количество строк, было бы эффективно – Nour

0
SELECT `fee_JD` as 'price' FROM `SC_rules` WHERE `offer_id_Flag`.`SC_rules` = '0'; 
SELECT `price` FROM `offer_rules` WHERE `offer_id`.`SC_rules` = '1'; 

Если вам нужны несколько запросов.

Смежные вопросы