-5

基本的に、2 つのテーブルを結合して結果を返そうとしています。以下は使用するコードです。問題は、「Tina」から「Ben」までの行のみを取得したいとします。IDがないため、それは不可能です.IDを何らかの方法で含めると、順序ではなく乱数になります。この種の問題を処理する方法はありますか?

SELECT names.name, COUNT(item) AS items
FROM names
LEFT JOIN names_items 
  ON names.name = names_items.name
GROUP BY names.name
ORDER BY COUNT(item) DESC

結果はこのようなものになります。

| Names  | Items  |
  Bob       60
  Tina      32
  Arthur    43
  Ben       21
  Ronie     54
4

2 に答える 2

2

これらすべてのテーブルを作成しながら列を作成できます。列名をidにし、idのプロパティは次のようになります

-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

次に、このIDを使用して、必要なものを選択できます

于 2013-06-30T07:04:37.273 に答える
2

"WHERE names.name in ('Tina', 'Ben', 'Arthur')? を追加してみてください。

これは、あなたがティナ、ベン、アーサーの情報を求めていることに基づいています。

または LIMIT (2,x) (x はティナとベンの間の距離)

これは、Tina が常に 2 番目のレコードであり、Ben が常に Tina から同じ距離にあり、常に Tina の後に来る場合にのみ機能します。

それを行うためのより複雑な方法は次のとおりです。

  1. OPにあるテーブルを一時テーブルに設定します。
  2. name = 'tina' のカウントを var1 として選択し、name = 'ben' の項目を var2 として選択します。
  3. do a case where var1 > var2 - select * where count < var1 and count > 2 else select * where count > var1 and count < var2

この質問に対する「良い」解決策はないと思います。Ben と Tina の間の全員が必要な理由を知っていれば、答えやすくなります。Ben と Tina に何か特別なことはありますか?

于 2013-06-30T07:18:12.510 に答える