2017-05-23 16 views
0

私はphpmyadminののSQLコンソールでそれらを貼り付けるときも行う2つのクエリがあります2つのうち1つのクエリを作成するにはどうすればよいですか?

まずクエリ:

SET @count=0,@msisdn=00385913586990,@delivered=0; 

2番目のクエリ:

SELECT tmp.msisdn,max(count) FROM (
     SELECT 
     sent_messages.msisdn, 
     @count := if(delivered = 0 and sent_messages.msisdn = @msisdn, @count+1, 0) as count, 
     @msisdn := 00385913586990, 
     @delivered := delivered 
     FROM `sent_messages` 
     WHERE `msisdn` LIKE '00385913586990' 
     AND `type` = 'PAID') as tmp 
     group by tmp.msisdn 
     having max(count) >= 14 

私はこれらのクエリを実行してみてください私のPHPコードの中で私は空白の結果を得る。

SELECT tmp.msisdn,max(count) FROM (
      SELECT 
      sent_messages.msisdn,@count := 0,@msisdn=00385913586990,@delivered=0, 
      @count := if(delivered = 0 and sent_messages.msisdn = @msisdn, @count+1, 0) as count, 
      @msisdn := 00385913586990, 
      @delivered := delivered 
      FROM `sent_messages` 
      WHERE `msisdn` LIKE '00385913586990' 
      AND `type` = 'PAID') as tmp 
      group by tmp.msisdn 
      having max(count) >= 14 

しかし、これは動作しません。ここで

は、私はそれらを一緒にバインドしようとした方法です。

+0

プロシージャを作成することができます。 – Blasanka

答えて

1

サブクエリで変数を初期化するのは、単純にジョインすることです。このようにして、それらは一度初期化されます。 SELECT句で実行すると、行が読み取られるたびに設定されます。

SELECT tmp.msisdn,max(count) FROM (
     SELECT 
     sent_messages.msisdn, 
     @count := if(delivered = 0 and sent_messages.msisdn = @msisdn, @count+1, 0) as count, 
     @msisdn := 00385913586990, 
     @delivered := delivered 
     FROM `sent_messages` 
     , (SELECT @count := 0, @msisdn := '00385913586990', @delivered := 0) var_init_subquery_alias 
     WHERE `msisdn` LIKE '00385913586990' 
     AND `type` = 'PAID') as tmp 
     group by tmp.msisdn 
     having max(count) >= 14 
+0

いいえ、これはSQLコンソールでも空の結果セットを返します。しかし、私はあなたの助けに感謝します、ちょうど動作しません – Ognj3n

+0

それはおそらく私は '00385913586990'を引用符で初期化するが、あなたがそれをしない他のすべての場所のためにそれを忘れたためです。先行ゼロ(引用符なしで無視され、数字に変換されるため)のために文字列であると仮定したので、私はそれを行いました。それを確認してください。 – fancyPants

+0

素晴らしい仕事!どうもありがとう :) – Ognj3n

関連する問題