Есть следующий запрос:
$mysqli->query("SELECT itemid FROM inventories AS a WHERE ownerid = 1 IN(SELECT itemid FROM items WHERE itemid = a.itemid)");
Я пытаюсь провести все itemid из первого SELECT'а во второй SELECT, но проходит только первый itemid.
Хочу сделать что-то типа того, только одним запросом:
$q = $mysqli->query("SELECT itemid FROM inventories WHERE ownerid = 1");
while($x = $q->fetch_assoc())
{
$mysqli->query("SELECT itemid FROM items WHERE itemid = ".$x['itemid']."");
}
Допустим, что вы хотите получить все записи таблицы items, для которых есть соответствия в таблице invetnories с ownerid = 1
Или если смотреть с другой стороны, вы хотите получить все записи таблицы inventories для ownerid = 1, которые упоминаются в таблице items
Для этой цели обычно используют соединение таблиц, используя оператор inner join:
SELECT itemid
FROM invetnories as a
INNER JOIN items as i on (i.itemid = a.itemid)
WHERE a.ownerid = 1
или в другую сторону
SELECT itemid
FROM items as i
INNER JOIN inventories as a ON (a.itemid = i.itemid and a.ownerid = 1)
Либо с подзапросом
SELECT itemid
FROM items
WHERE itemid IN (
SELECT itemid FROM inventories WHERE ownerid = 1
)
Вам надо почитать, как использовать JOIN.
Вот этот запрос покажет Вам все itemid из items, которые в inventories ownerid=1.
SELECT i.itemid FROM items i
JOIN inventories inv ON i.itemid=inv.itemid
WHERE inv.ownerid=1
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости