5

この複雑な選択をうまく機能させるのに苦労しています。

これが私の構造の図です。 http://www.bandwise.com/files/tester_db.png

構造体とサンプルデータのSQLファイル。 http://www.bandwise.com/files/tester_db.sql

簡単に言えば、「賃貸」というテーブルと「アパート」というテーブルがあります。賃貸とアパートの間には1対多の関係があります。アパートは、それらが属する米国の州と郡を識別します。したがって、特定の賃貸契約では、全国に多数のアパートが点在している可能性があります。

私がする必要があるのは、1つ以上のアパートを含み、適用されるリースの数のカウントを返す米国の州のみを選択することです。一部のリースでは複数の州にアパートがある場合があるため、複数の州でリースをカウントする必要がある場合があります。

これが私が使用しているテストクエリです。

SET @timenow = 1360855314;

SELECT l.lid, c.aid, c.leaseid, c.serialnum, c.state, c.county
FROM leases l, apartments c
WHERE c.leaseid = l.lid
    AND l.closebidding > @timenow AND l.status = 1;

ここでは、州#1(テキサス)に6つのリースがあり、州#2(ルイジアナ)に2つのリースがあることがわかります。アパートの場所に基づいてリースの数を取得するために、状態テーブルから外部にクエリを実行するにはどうすればよいですか?

リターンは次のようになります。

---------------------------
|  state      |   total   |
---------------------------
|  Texas      |     6     |
---------------------------
|  Louisiana  |     3     |
---------------------------
4

2 に答える 2

3

を使用しcount(distinct l.lid)ます:

SELECT s.state_name,count(distinct l.lid) 
FROM 
  leases l
  JOIN apartments c ON c.leaseid = l.lid
  JOIN states s ON s.state_id = c.state
WHERE
  l.closebidding > @timenow AND l.status = 1 
GROUP BY s.state_name;

SQLフィドル

于 2013-02-14T18:37:53.370 に答える
0

使用する

WHERE s.stateid = s2.stateid AND s2.dateadded > [unix timestamp] and s2.TOTAL <> 0 
于 2012-10-22T22:12:55.760 に答える