0
私は単純なクエリのように思っています。私はselect句にサブクエリを追加しようとするまでうまく動作するクエリを持っています。私は最初から取得した日付で2番目のテーブルを照会して列を追加しようとしています。私は結合がよりよいかもしれないかどうかわからない。最初のサンプルを見ると、外側のselectステートメントからの日付範囲を使用する代わりに、2番目のテーブルのすべてのレコードが返されます。私はちょうどこのように日付などの文字列を入力するとメインクエリ値との日時比較を伴うMySQLサブクエリ
SELECT `sales`.`date` as 'newdate', `sales`.`material`,
`customer_logs`.`name`, `sales`.`billingqty` ,
(select count(*) from iis_logs where datetime > (select
Date_add(date_format(newdate, "%Y-%m-%d 00:00:00"), interval - 1 day))
and datetime < date_format(newdate, '%Y-%m-%d 00:00:00' and url like
CONCAT('%',material,'%') limit 1) as tr
FROM `sales`
JOIN `customer_logs` ON `customer_logs`.`customer_number` =
`sales`.`soldtopt`
WHERE `date` >= '2017-09-01'
AND `date` <= '2017-09-30'
ORDER BY `date` DESC
LIMIT 10;
それは秒以内に返されます。
SELECT `sales`.`date` as 'newdate', `sales`.`material`,
`customer_logs`.`name`, `sales`.`billingqty` ,
(select count(*) from iis_logs where datetime > '2017-09-01 00:00:00'
and datetime < '2017-09-03 00:00:00' and url like
CONCAT('%',material,'%') limit 1) as tr
FROM `sales`
JOIN `customer_logs` ON `customer_logs`.`customer_number` =
`sales`.`soldtopt`
WHERE `date` >= '2017-09-01'
AND `date` <= '2017-09-30'
ORDER BY `date` DESC
LIMIT 10;
はそれではなく、私はselect文で取得しようとしていますNEWDATEの値を取っていませんiis_logsテーブルのすべての行を戻しています...
リテラル日付の代わりに選択から結果を使用するたびに結合を試みましたが、それはもはや機能しません。比較の日付としてselectの結果を使用すると何か問題が起きていますか? –
結合で使用したコードを投稿できますか? – pucky124
date_format( 's'.'date'、 '%Y-%m-%d- 00:00:59')を '終了'として選択すると、 date_format(' s'.'date'、 '%Y-%m - %d 00:00:00 ')を'開始 '、' s'、 '材料'、 's'.'billingqty'、iis_logs.datetime から販売しています。 はiis_logsに参加しました。iis_logsiis_logs.datetime on date_format date_format( 's'.'date'、 '%Y-%m-%d 23:59:%d-%m-%d 00:00:00' 59 ') WHAT 'date'> =' 2017-06-05 ' AND' date' <=' 2017-06-30 ' LIMIT 5; –