2017-02-21 5 views
0

私は次の2つのステートメントを持っており、これを1つのステートメントでのみ取得したいと考えています。それは可能ですか?最後の2日間からコンテンツを取得MYSQL LIKE IN /マッチングサブストリング

声明の一つ、:c.idで

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) 

私は注文から合計(数量)を取得する必要があります。そのように:

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

テーブルの中では、Column Subtagには正確にc.idがありません。その列のちょうど一部。だからこそ私は好きです!テーブルオーダーのサブタグは、132_ サブタグ _kjsdf4382のようになります。

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

の記事のようになります:

表の受注などが見えます

:クエリから

ascsubid ID    
b1a8cc  82 

結果のようになります。

ID  id_content  scheduled   ad_active posted 
3015 82    1487754540   0   1 

やコンテンツは、のように見えます

SubTag Orders 
b1a8cc  2 
+0

サンプル・データを試みることができるし、所望の結果は、あなたが何をしたいのか説明するのに役立つでしょう。 –

+0

良いアイデア。私は質問を更新しました – swapfile

答えて

0

あなたは以下の声明を探していると思います。

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

'これを1つの文で取得したい'私はこれが質問に対する答えだとは思わない、あなたはまだ2つの異なる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; 

OR

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