Написание SQL-запроса - PullRequest
0 голосов
/ 25 июля 2011

У меня есть две таблицы:

product_description (имя, product_id )

продукт (количество, stock_status_id, цена, product_id )

То, что я пытаюсь сделать, это выполнить запрос, который получит мне вышеуказанные данные, но я не уверен, как реализовать объединение, чтобы получить объединенные данные из обеих таблиц.

Решено

Я сделал следующее:

SELECT product_description.name, product.quantity,product.price
FROM product
INNER JOIN product_description
ON product.product_id=product_description.product_id
ORDER BY product_description.name 

Ответы [ 3 ]

1 голос
/ 25 июля 2011

Работая в предположении, что в каждой таблице есть совпадения product_id с, вот запрос, который вернет необходимые данные с использованием неявных соединений:

SELECT product.product_id, name, quantity, stock_status_id, price
FROM product, product_description
WHERE product.product_id = product_description.product_id

ОБНОВЛЕНИЕ:

Это работает, как я ожидал.Вот два дампа таблицы, которые могут вам помочь, и вывод запроса.

таблица продукта:

--
-- Table structure for table `product`
--

CREATE TABLE IF NOT EXISTS `product` (
  `product_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`product_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

--
-- Dumping data for table `product`
--

INSERT INTO `product` (`product_id`, `name`) VALUES
(1, 'Croissant'),
(2, 'Danish');

таблица product_description:

--
-- Table structure for table `product_description`
--

CREATE TABLE IF NOT EXISTS `product_description` (
  `product_id` int(11) NOT NULL,
  `quantity` int(11) NOT NULL,
  `stock_status_id` int(11) NOT NULL,
  `price` double NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Dumping data for table `product_description`
--

INSERT INTO `product_description` (`product_id`, `quantity`, `stock_status_id`, `price`) VALUES
(1, 6, 2, 12.5),
(2, 13, 1, 19.25);

Вывод извышеуказанный запрос:

"1","Croissant","6","2","12.5"
"2","Danish","13","1","19.25"
0 голосов
/ 25 июля 2011
SELECT
   -- name each column you want here
   -- prefix columns from the PRODUCT table with its alias like so:
   p.product_id,

   -- prefix columns from the other table as its alias
   d.quantity
FROM
    PRODUCT p  -- name of your PRODUCT table aliased as p
INNER JOIN     -- join against your other table
    PRODUCT_DESCRIPTION d -- name of your other table aliased as d
ON
    p.product_id = d.product_id -- match the foreign keys

См. INNER JOIN документацию для более подробной информации.

ПРИМЕЧАНИЕ. Это не будет работать как есть, вам нужно будет указать нужные столбцы в каждой таблице в предложении SELECT и, возможно, исправить имена таблиц, соответствующие вашему приложению.

0 голосов
/ 25 июля 2011

может быть как то так?

select p.id, p.quantity, p.stock_status_id, p.price, d.name
from Product p inner join `Product Description` d on d.product_id=p.id

хотя я все еще не уверен в том, как на самом деле выглядит схема таблицы, из описания в вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...