Как пропустить массив в запрос MySQLi?

208
28 марта 2018, 06:27

Есть следующий запрос:

$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']."");
        }
Answer 1

Допустим, что вы хотите получить все записи таблицы 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
 )
Answer 2

Вам надо почитать, как использовать JOIN.

Вот этот запрос покажет Вам все itemid из items, которые в inventories ownerid=1.

SELECT i.itemid FROM items i
JOIN inventories inv ON i.itemid=inv.itemid
WHERE inv.ownerid=1
READ ALSO
Nginx Rewrite замена символа/текста

Nginx Rewrite замена символа/текста

Здравствуйте, в вирт хосте есть следующий конфиг:

180
проблема кодировкой mysql

проблема кодировкой mysql

Здравствуйте, у меня проблема с кодировкой mysql - в место русских букв дает вопросительные знаки без квадратиков

156
Как получить id из php массива с помощью JS?

Как получить id из php массива с помощью JS?

У меня есть задача, получить ID элементов и php массива с дальнейшим применением в коде JSесть 2 массива:

180