2017-04-08 9 views
-2

テーブルに対して複数のクエリを実行し、コンマ区切り形式で出力を取得する必要があります。ここに私が書いたスクリプトですが、各MySQLクエリの出力を1行ずつ表示します。コンマで区切られた複数のMySqlクエリの出力

#!/bin/bash 
mysql -uuser -p7pas db -e "select number from hits_log where created_at between '2017-04-07 00:00:00' and '2017-04-08 00:00:00'| while read number; do 

mysql -uuser -ppas db -e "select number,count(1) as total_hits from hits_log where number='$number' and time between '2017-04-07 00:00:00' and '2017-04-08 00:00:00' ; select count(1) as xxx from hits_log where number_type='some_value' and old_number='$number' and time between '2017-04-07 00:00:00' and '2017-04-08 00:00:00';" 
done 

私が手出力が所望の出力は、あなたがループを必要としない

number total_hits xxxx 

12345 4 0 
+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-veryを参照してください。 -simple-sql-query – Strawberry

+0

クエリを結合して1つの行としてまとめる必要があります。 – Barmar

答えて

0

ある

number total_hits 

12345 4 

xxxx 

0 

です。 2つのクエリを結合するだけです。

mysql -e " 
    SELECT l1.number, COUNT(*) AS total_hits, IFNULL(l2.xxx, 0) AS xxx 
    FROM hits_log AS l1 
    LEFT JOIN (
     SELECT old_number, COUNT(*) AS xxx 
     FROM hits_log 
     WHERE number_type='some_value' 
     AND time between '2017-04-07 00:00:00' and '2017-04-08 00:00:00' 
     GROUP BY old_number) AS l2 
    ON l1.number = l2.old_number 
    WHERE time between '2017-04-07 00:00:00' and '2017-04-08 00:00:00' 
    GROUP BY l1.number" 

あなたが本当にループ内の単一$numberのためのクエリを実行する必要がある場合でも、単一の行にそれらを得るために、これらの2つのクエリを結合することができます。

mysql -e " 
    select number,count(1) as total_hits, xxx 
    from hits_log 
    cross join (
     select count(1) as xxx 
     from hits_log 
     where number_type='some_value' 
     and old_number='$number' 
     and time between '2017-04-07 00:00:00' and '2017-04-08 00:00:00' 
    ) as x 
where number='$number' 
and time between '2017-04-07 00:00:00' and '2017-04-08 00:00:00' ;" 
+0

ありがとうございますが、私が投稿した内容は、私がやろうとしているレポートの一部です。私は少なくとも10の異なるクエリから値を結合して、望ましい出力を得る必要があります。現時点では、出力値を変数に格納し、カンマ区切りの各変数を出力しようとしています。あなたの助けと時間をいただきありがとうございます:) – Syamjprakash

+0

私はループ内で一度に1つの番号を行う方法を示す2番目のクエリを追加しました。 – Barmar

+0

パーフェクト!どうもありがとう – Syamjprakash

関連する問題