#php #mysql
#php #mysql
Вопрос:
Я уже немного исследовал это, и все мои попытки пока не увенчались успехом. Я пытаюсь выполнить запрос mysql в моем php-скрипте, который имеет дело с несколькими таблицами.
Вот как выглядят таблицы:
ТАБЛИЦА 1
Имя
ТАБЛИЦА 2
Продукт (название)
Инвентаризация
CatID
ProductID
ТАБЛИЦА 3
product_url
«название» (таблица 1) должно совпадать с «Продуктом» (таблица 2). Далее, «Инвентаризация» (таблица 2) должна быть = «Y». Наконец, «CatID» должен быть = «2».
Моя попытка выглядела примерно так:
SELECT 1.name, 2.Product, 2.Inventory, 2.CatID
FROM table1 1, table2 2
WHERE 2.Inventory = 'Y'
AND 1.name = 2.Product
AND 2.CatID = '2'
Исходя из результатов, я хотел бы получить дополнительную информацию из таблицы, такую как описание продукта и т. Д., Которая будет в table1 и table2… Я никогда раньше не присоединялся и не запрашивал 2 (или более) таблицы. Любая помощь была бы очень признательна.
Комментарии:
1. Пожалуйста, примите ответы на некоторые из ваших предыдущих вопросов. Вы получите более быструю помощь.
2. Если
t2.Product = t1.Name
and Name является единственным столбцом в t1, вам не нужно ПРИСОЕДИНЯТЬСЯ.3. Возможно, вы захотите ознакомиться с информацией о нормализации базы данных перед проектированием своей базы данных. Это избавит вас от многих головных болей в дальнейшем.
4. Я слышу тебя в этом вопросе… К сожалению, это существующие таблицы
Ответ №1:
Попробуйте это:
SELECT table1.Name, table2.Product, tabl2.Inventory, table2.CatID
FROM table1 INNER JOIN table2
ON table1.Name = table2.Product
WHERE table2.CatID = '2'
Комментарии:
1. Я попробовал это и даже добавил букву «е», отсутствующую в таблице 2. Инвентаризация… Это все еще не работает. $query = (» ВЫБРАТЬ table1.Name , таблица2.Продукт, таблица2. Инвентаризация, таблица2.ИДЕНТИФИКАТОР CatID ИЗ таблицы1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ таблицы2 С таблицой1. Name = table2.Product И table2.CatID = ‘2’ «); в то время как($test = mysql_fetch_array($query)) { echo $test[‘name’]; }
2. CatID = ‘2’ должен быть в предложении WHERE, а не from . Опечатка с моей стороны в оригинальном сообщении. Отредактированный запрос является допустимым запросом, хотя предполагается, что база данных настроена правильно и вы успешно передаете значения из php-кода. Вы можете получить больше значений, чем ожидаете, в зависимости от структуры таблиц и ваших первичных / внешних ключей, но нам потребуется больше информации, чтобы знать это…
3. $test[‘name’] должно быть $test[‘table1.name «];
Ответ №2:
SELECT t1.name, t2.Product, t2.Inventory, t2.CatID, t2.ProductID
FROM table1 t1
INNER JOIN table2 t2 ON t2.Product = t1.name
WHERE t2.Inventory = 'Y' AND t2.CatID = 2
К сожалению, база данных, с которой вам приходится работать, была очень плохо спроектирована. Если запрос, который я вам дал, не работает, убедитесь, что у вас есть данные в таблицах, которые действительно соответствуют критериям, которые вы ищете.
Также помните, что когда вы обращаетесь к этим полям в PHP, значение заглавных букв имеет значение. Вам нужно сделать что-то вроде этого:
<?php
$q = QUERY FROM ABOVE
$r = mysql_query($q);
while($row = mysql_fetch_assoc($r)) {
$name = $row["name"];
$product = $row["Product"];
$inventory = $row["Inventory"];
$catid = $row["CatID"];
$productid = $row["ProductID"];
}
?>