-1

結合ステートメントを組み合わせて、データベース全体を表示する 1 つのテーブルを作成することができました。ここで、結果を過去 30 日間だけに絞り込む必要がありますが、この制限をクエリに組み込む方法を理解することはできません。

今私は持っています:

select customers.name, customers.email, orderinfo.orderno, orderinfo.orderdate, status.state, orderinfo.lastupdate 
from customers 
where orderinfo.orderdate = curdate() 
inner join orderinfo on customers.id=orderinfo.fk_id 
inner join status on orderinfo.fk_code=status.code 
order by customers.name;

...今日のすべての記録を表示するように絞り込もうとしていますが、それでもうまくいきません。30 日間のことを行うにはさまざまな方法があるようですが、私が最も苦労しているのは、このクエリで WHERE 句をまったく機能させることです。

アドバイスをありがとう!

4

4 に答える 4

1

WHERE句はORDER BY、すべての結合の前と後に配置する必要があります。

select customers.name, customers.email, orderinfo.orderno, orderinfo.orderdate, status.state, orderinfo.lastupdate 
from customers 
inner join orderinfo on customers.id=orderinfo.fk_id 
inner join status on orderinfo.fk_code=status.code 
where orderinfo.orderdate = curdate() 
order by customers.name;
于 2012-12-01T09:02:51.283 に答える
0
SELECT customers.name, customers.email, orderinfo.orderno, orderinfo.orderdate, status.state, orderinfo.lastupdate 
FROM customers 
INNER JOIN orderinfo ON customers.id=orderinfo.fk_id 
INNER JOIN status ON orderinfo.fk_code=status.code 
WHERE orderinfo.orderdate = curdate() 
ORDER BY customers.name;

WHEREJOINS結局、前にある必要がありますORDER BY

于 2012-12-01T09:04:31.130 に答える
0

内部結合は where 節の前に置く必要があります

select customers.name, customers.email, orderinfo.orderno, orderinfo.orderdate, status.state, orderinfo.lastupdate 
from customers 
inner join orderinfo on customers.id=orderinfo.fk_id 
inner join status on orderinfo.fk_code=status.code 
where orderinfo.orderdate = curdate() 
order by customers.name;

最初に条件でクエリを実行する必要がある場合は、サブクエリが必要です

Select * From
(
   select customers.name, customers.email, orderinfo.orderno, orderinfo.orderdate, status.state, orderinfo.lastupdate 
   from customers
   where orderinfo.orderdate = curdate()  
) customers
inner join orderinfo on customers.id=orderinfo.fk_id 
inner join status on orderinfo.fk_code=status.code 
order by customers.name;
于 2012-12-01T09:04:47.063 に答える
0

orderinfoあなたはあなたのFROM部分でを指定しませんでした。

select customers.name, customers.email, orderinfo.orderno, orderinfo.orderdate, status.state, orderinfo.lastupdate 
from customers 
inner join orderinfo on customers.id=orderinfo.fk_id 
inner join status on orderinfo.fk_code=status.code 
where orderinfo.orderdate = curdate() 
order by customers.name;
于 2012-12-01T09:02:37.937 に答える