Как выбрать из бд в массив, а потом снова выбрать из бд все строки с данными из этого массива?
У меня есть таблица whois со столбцами who1, who2, status. Нужно выбрать из этой таблицы все строки, где или who1 или who2 равен, например, "glados" и поместить данные выбранных строк в массив. После нужно из таблицы whereis выбрать все строки по массиву, в которых author равно всем выбранным сначала who1 или who2, но не равно "glados".
Я не могу придумать, как это реализовать. Надеюсь на вашу помощь.
Можно пример первого и второго массивов? А то не понятно. В первом вы выбираете who1 или who2 равное "glados", а во втором хотите выбрать не равное "glados" .
holfza: в первом who1 или who2 может быть glados. Во втором нужно выбрать строки в которых author - или who1 или who2, но не равное glados. Т.е. если who1 из первого массива - glados, то во втором мы должны выбрать все строки в которых author - who2 и наоборот.
Для правильного вопроса надо знать половину ответа
SELECT *
FROM (SELECT DISTINCT IF(`who1` = 'glados', `who2`, `who1`) AS `name`
FROM `whois`
WHERE (`who1` = 'glados' OR `who2` = 'glados')
AND `who1` != `who2`)
AS `who`
LEFT JOIN `whereis` AS `where` ON `where`.`author` = `who`.`name`
Алексей Яхненко: при попытке подставить массив с содержанием [0] => 3 [1] => 3 [2] => 1 [3] => 1 (получено при помощи print_r) выдаёт ошибку "Notice: Array to string conversion in" и ничего не выбирает из базы.