2017-02-21 2 views
0

У меня есть следующие два утверждения и вы хотите получить это только в одном выражении. Это возможно?MYSQL LIKE IN/Подходящая подстановка

себе один, получить содержание от последних 2-х дней:

SELECT 
    c.ID SUBTAG 
FROM 
    `content` c, 
    posts p 
WHERE 
    c.id = p.id_content AND 
    from_unixtime(p.scheduled) BETWEEN TIMESTAMPADD(DAY,-2,now()) AND from_unixtime(UNIX_TIMESTAMP(NOW())) 
ORDER BY from_unixtime(p.scheduled) 

С c.id мне нужно получить сумму (кол-во) из Орденов. Например:

SELECT 
    sum(Qty) Bestellungen, 
    SUBTAG 
FROM 
    Orders 
WHERE SubTag Like '%c.id%' 
GROUP BY SubTag 

Внутри таблицы указано, что в подстроке столбца точно нет c.id. Его просто часть Колонны. Вот почему мне нужно подобное! Subtag в Table Orders выглядит как 132_ subtag _kjsdf4382.

Таблица заказов выглядит следующим образом:

Date_   Price Qty  SubTag 
2017-02-20  14.98 1  b1a8cc_2_qgsGairwtape 
2017-02-20  14.98 1  b1a8cc_3_qgdfgdirwtape 

сообщений выглядит следующим образом:

ID  id_content  scheduled   ad_active posted 
3015 82    1487754540   0   1 

И содержание выглядит следующим образом:

ascsubid ID    
b1a8cc  82 

Результат выполнения запроса должен выглядеть следующим образом:

SubTag Orders 
b1a8cc  2 
+0

выборку данные и желаемые результаты помогут объяснить, что вы хотите сделать. –

+0

хорошая идея. я обновил вопрос – swapfile

ответ

0

Я думаю, что вы ищете инструкцию ниже.

SELECT 
    sum(Qty) Bestellungen, 
    SUBTAG 
FROM 
    Orders 
WHERE SubTag Like '%' + c.id + '%'; 
GROUP BY SubTag 
+0

'хочу получить это только в одном выражении' Я не думаю, что это ответ на вопрос, вы все еще используете два разных оператора SQL. –

1

Нечто подобное?

SELECT 
    sum(Qty) Bestellungen, 
    SUBTAG 
FROM 
    Orders 
WHERE SubTag in 
    (SELECT c.ID 
    FROM `content` c, posts p 
    WHERE c.id = p.id_content AND 
    from_unixtime(p.scheduled) BETWEEN TIMESTAMPADD(DAY,-2,now()) AND 
    from_unixtime(UNIX_TIMESTAMP(NOW())) 
    and c.id Like '%c.id%') 
GROUP BY SubTag; 
0

Вы можете попробовать

SELECT 
    SUM(Qty) Bestellungen, 
    SubTag 
FROM 
    Orders 
WHERE EXIST 
    (SELECT c.ID 
    FROM `content` c, posts p 
    WHERE c.id = p.id_content 
      AND from_unixtime(p.scheduled) BETWEEN TIMESTAMPADD(DAY,-2,now()) AND from_unixtime(UNIX_TIMESTAMP(NOW())) 
      AND Orders.SubTag LIKE CONCAT('%', c.ID, '%')) 
GROUP BY SubTag; 

ИЛИ

SELECT 
    SUM(Orders.Qty) Bestellungen, 
    Orders.SubTag 
FROM 
    (SELECT 
     c.ID SUBTAG 
    FROM 
     `content` c, 
     posts p 
    WHERE 
     c.id = p.id_content AND 
     from_unixtime(p.scheduled) BETWEEN TIMESTAMPADD(DAY,-2,now()) AND from_unixtime(UNIX_TIMESTAMP(NOW())) 
    ORDER BY from_unixtime(p.scheduled) 
    ) Tag INNER JOIN Orders ON Orders.SubTag LIKE CONCAT('%', Tag.SubTag, '%') 
GROUP BY 
    Orders.SubTag