2017-10-19 14 views
0
---------------------------- 
| user | path | active | 
---------------------------- 
| user A | A.1  | 0 | 
---------------------------- 
| user B | A.1.1 | 1 | 
---------------------------- 
| user C | A.1.1.1 | 1 | 
---------------------------- 

条件が含まれています。 ユーザBはユーザAの子であり、ユーザCはユーザBの子です。 アクティブな場合= 0はユーザがアクティブではないことを意味します。ネストされたSELECT MySQLのオペランドはすべき1列

私はアクティブで、子供を持つユーザーAの子供をパスで選択する必要があります。

は、今の私はすでに

が、今私は、ユーザAの子を選択する必要があり、それはユーザAのすべてのチャイルズを返します

select path from table where active = 1 and `path` like 'A.1%' and 
length(`path`) - length(replace(`path`, '.', '')) = 2; 

ユーザーの子を選択するクエリを持っている人子供もいます。

私はこの

select distinct path from table where active = 1 and user_type = 1 and `path` like ((select path from acctProgress_monthly where active = 1 and user_type = 1 and `path` like 'A.1%' and 
length(`path`) - length(replace(`path`, '.', '')) = 2), '%'); 

などの選択ネストされたユーザーに試してみましたが、それは誤り

誰かがこの問題について私を助けることができる

おかげでたくさん

「オペランドが1列が含まれている必要があり」を返します

答えて

0

mysqlでネストされたSELECTを使用する場合は、1の値を返さなければなりません。

ようになりmyNamesテーブルを想像してみて:

ID |名称

1 | ジョン

2 | アン

そうした場合、(SELECT name FROM myNames)が複数行を返しますので、

SELECT * FROM myTable WHERE name = (SELECT name FROM myNames);

は、そのエラーがスローされます。

SELECT * FROM myTable WHERE name = (SELECT name FROM myNames WHERE id = 1);

:あなたが唯一の1行目と1列(1値)を返す必要がそれを修正する

関連する問題