2010-09-02 4 views
2

Я пытаюсь отфильтровать коллекции таблиц по id, а затем присоединяюсь к коллекциям.user_id на users.user_id.Фильтрация таблицы, а затем объединение результатов

Вот запрос я попытался

SELECT * FROM 
(SELECT * FROM collections WHERE mid=`$id`) c 
JOIN users on c.mid = users.user_id ORDER BY users.user_id 

Не удалось получить его работы, очевидно. Любая помощь или указатели будут оценены!

CREATE TABLE `collections` (
    `user_id` int(11) NOT NULL, 
    `mid` int(11) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

CREATE TABLE `users` (
    `user_id` int(11) NOT NULL AUTO_INCREMENT, 
    `api_public` varchar(32) DEFAULT NULL, 
    `api_secret` varchar(32) NOT NULL, 
    UNIQUE KEY `unique id` (`user_id`) 
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; 

ответ

4

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

SELECT * 
    FROM collections A 
    JOIN users B ON A.mid = B.user_id 
       AND A.mid = 'value of $id' 
ORDER BY B.user_id 
+0

Работал отлично. Просто нужно изменить «B ON A.mid» на «B ON a.user_id». – Eric

2

Как об этом:

SELECT c.*, u.* FROM collections c 
JOIN users u ON c.mid = ? AND c.mid = u.user_id 
ORDER BY u.user_id 

(где ? является маркер параметра, конечно).

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