2015-12-11 3 views
2

Я пытаюсь объединить запрос 1 - это запрос запроса 2 в 3. Но он всегда будет возвращать одну запись. Ниже мой запрос,Подзапрос возвращает всегда одну запись

1.SELECT REPLACE(LEFT(friend_id, LENGTH(friend_id)-2),'["','') AS friend_id FROM `friends_list` WHERE login_userid=90 

Output : 
friend_id 
32,44 

2.SELECT id, CONCAT(firstname," ",lastname) AS username FROM register WHERE id IN(32,44) 

Output : 
id username  
32 Suresh M 
44 Senthil Kumar 

Пример кода,

3.SELECT t1.id, CONCAT(t1.firstname," ",t1.lastname) AS username 
FROM register AS t1 
INNER JOIN friends_list AS t2 ON t1.id=t2.login_userid 
WHERE t1.id IN(SELECT REPLACE(LEFT(friend_id, LENGTH(friend_id)-2),'["','') AS friend_id FROM `friends_list` WHERE login_userid=90) 

Output : 
id username  
32 Suresh M 

Я хочу результата,

id username  
32 Suresh M 
44 Senthil Kumar 

Пожалуйста, исправьте мой плохой запрос (третий).

+0

Где используется PHP? – Hassaan

+0

Извините, теперь я редактирую свой вопрос. –

+0

Тот же результат. Он возвращает одну запись. –

ответ

2

Просто удалите ваш внутреннее соединение состояние

SELECT t1.id, CONCAT(t1.firstname," ",t1.lastname) AS username 
    FROM register AS t1 
    WHERE t1.id IN(SELECT REPLACE(LEFT(friend_id,  LENGTH(friend_id)-2),'["','') AS friend_id FROM `friends_list` WHERE login_userid=90) 
+0

Он вернет одну строку 32 Suresh M –

+0

ok @RamaLingam .. может у, пожалуйста, скажите мне, сколько запросов выбора строки внутри IN условие возвращается ... SELECT REPLACE (LEFT (friend_id, LENGTH (friend_id) -2), '[' ',' ') AS friend_id FROM 'friends_list' WHERE login_userid = 90 – Avi

+0

Выполняется только одна строка. Выход: friend_id 32,44 Таким образом, он возвращает одну запись. .? –

-1

Вы можете попробовать это:

SELECT R.id 
    , CONCAT(R.firstname, " ", R.lastname) AS username 
    FROM register R 
    WHERE R.id IN (
     SELECT CAST(REPLACE(LEFT(F.friend_id, LENGTH(F.friend_id)-2) ,'["' ,'') AS UNSIGNED) 
      FROM friend_list F 
      WHERE F.login_userid = 90 
    ) 
+0

Ошибка: синтаксис для использования вблизи «) ОТ friend_list F WHERE F.login_userid = 90 ) –

+0

Теперь это запустить После добавления -2),» [ "», „“) –

+0

Повторите попытку. Я забыл некоторые коды из вашего вопроса – KaeL

1

Это должно работать Фой вы @RamaLingam

Попробуйте это без использования INNER JOIN,

SELECT t1.id 
    , CONCAT(t1.firstname, " ", t1.lastname) AS username 
    FROM register t1 
    WHERE t1.id IN (
     SELECT CAST(REPLACE(LEFT(t2.friend_id, LENGTH(t2.friend_id)-2),'["','') AS UNSIGNED) 
      FROM friend_list t2 
      WHERE t2.login_userid = 90 
    ) 
+0

Ошибка Mysql: синтаксис использовать рядом с «AS UNSIGNED» –

+0

Ошибка Mysql: синтаксис для использования рядом с «friend_id» –

2
SELECT id, CONCAT(firstname," ",lastname) AS username 
FROM register 
WHERE id IN(SELECT (select TRIM(BOTH '["' from (select TRIM(BOTH '"]' from friend_id)))) as friend_id FROM `friends_list` WHERE login_userid=90)  
+0

Он вернет одну строку 32 Suresh M –

+0

, почему вам нужна функция REPLACE & LEFT в столбце friend_id? Как ваши данные хранятся в столбце friend_id? –

+0

friend_id : ["32,44"] –

Смежные вопросы