3

次の 3 列のテーブルがあります。これは単なるサンプルです (実際のものではありません)。

Number Decription Value
1 Green 100
1 Yellow 101
1 Blue 102
2 Chair 200
2 Table 101
2 Green 150
3 Car 200
3 plane 205
3 green 105

私の最初のクエリは、値「101」を含む任意のレコードまたは行を検索することです。このシナリオでは問題ありません。[1, Yellow,101] と [2, table, 101] の 2 つのレコードと、番号が 3 のすべてのレコードと残りのレコードが見つかります。完璧に無視されます。ここで、FIRST クエリの RESULT に基づいて他のレコードを選択する必要があります。1 番と 2 番が真の結果です。この場合、列 [番号] から [1 と 2] を見つけたので、任意の説明 = [緑] の値を検索して追加したいと思います。[101] 値がない [3] は無視します。

表示したい理想的な結果は

[1, yellow, 101] and Green is 100
[2, table, 101] and Green is 150

私はそれを機能させるために頭痛を抱えています。これまでのところ良い結果はありません。この場合のスクリプトを作成する方法を誰かが知っている場合は、私に知らせてください。質問が明確であることを願っています。

PSテーブルの内容は、何が何であるかを理解するためだけに偽物であり、fyiはSQL + PHPです。

4

3 に答える 3

2

これを試して:

select 
  concat('[', concat_ws(', ', s1.number, s1.description, s1.value), '] and ', s2.description, ' is ', s2.value)
from 
  sample s1
inner join 
  sample s2 on s2.number = s1.number
where 
  s1.value = 101 and 
  s2.description = 'Green'

SQL フィドルのデモ

于 2012-10-25T22:18:10.517 に答える
0

これを試して。これがあなたがやろうとしていることだと思います。

編集。「グリーン」だけを取得しようとしていますか?

SELECT * from table WHERE table.Number IN (
    SELECT Number FROM table WHERE table.Value = 101
) AND table.Description = "Green";
于 2012-10-25T21:27:04.460 に答える
0

私はそれをたくさん見てきましたが、それはブランコフィールドを示しています:(..しかし、今朝、コーヒーをたくさん飲んだ後、多くのテストを行ったので、私がやろうとしていることは意味がないと思います。レコード[1 , yellow, 101] 条件値 "101" に基づいて、number[1] が [101] と [Green] の両方に一致するため、コンテンツ フィールド [Green] を希望どおりに追加することはできません。しかし、レコード [3 green, 105] も検出されます.3 には [101] データがないため、適切ではありません. 私はこれがクレイジーなパズルであることを知っています. だから今、UNIQUE 番号 1,2 を持つ別のテーブルを追加したいと思います. 3 であり、その番号は表のサンプルの 1 列目に対応する必要があります。サンプルには 1 と 2' と 3 などの重複があります。そうすると、実行可能な状態になる可能性があります。ここで、次のように 1 つの行またはリストにデータを表示できます ==> 1、黄色、101、および緑色、100。

于 2012-10-26T09:22:12.197 に答える