Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: выборка с двух таблиц
 
 автор: m@rchello   (23.07.2010 в 08:02)   письмо автору
 
 

Добрый день.
Необходимо произвести выборку с двух таблиц, с одной таблицы выборку всех строчек по условию , а с другой таблицы цену и кол-во если в ней есть запись с таким же кодом как и в первой, если записи нет то просто вернуть 0.

вот пример таблиц ...
Таблица 1
_________________
kod | title | col
------------------------------
Гл00001 | товар1 | 2
Гл00002 | товар2 | 1
Гл0023 | товар3 | 5
ТР095 | товар4 | 3
JV000023 | товар5 | 1
-----------------------------

Таблица 2
________________________
kod | title | col | price
------------------------------------------
Гл00001 | товар1 | 2 | 1250
Гл0023 | товар3 | 5 | 950
JV000023 | товар5 | 1 | 2400
------------------------------------------

В результате хотелось бы получить результат
kod - таблица 1
title - таблица 1
col - таблица 1
col_s - col в таблице 2
price - таблица 2
sum - col(таблица 1) *(умножить) price(Таблица 2)

если в таблице 2 нет записи с таким же kod как и в таблице 1, то тогда col_s=0,price=0, sum=0

чтобы более ясно представить ситуацию
Таблица 1 - это корзина(Доборная)
Таблица 2 - это каталог товаров

в каталоге товаров часто меняются цены и кол-во, а также удаляются какие то позиции ...
поэтому приходится брать цену от туда а также проверять кол-во.

  Ответить  
 
 автор: Ученик   (23.07.2010 в 09:50)   письмо автору
 
   для: m@rchello   (23.07.2010 в 08:02)
 

А зачем вам дубликаты title в обоих таблицах, если вы всегда можете взять актуальный из таблицы каталога товаров?
Ну а запрос будет выглядеть так.

SELECT 
t1.kod, t1.title, t1.col,
t2.col as col_s, t1.price, (t1.col*t2.price) as sum
FROM Таблица 1 t1
LEFT JOIN
 Таблица 2 t2 USING(kod)


Вообще не совсем понятна колонка количества товара в таблице каталога, ну вам наверно виднее

  Ответить  
 
 автор: m@rchello   (23.07.2010 в 10:04)   письмо автору
 
   для: Ученик   (23.07.2010 в 09:50)
 

дубликаты title - это не хорошо, согласен

Но у меня доборная корзина, тоесть человек сегодня поскладывал, завтра поскладывал ... а прайс в день перезаливается около 2-3 раз + совершаются покупки порядка 20 раз в день ... соответственно из каталога(прайса) удаляются записи .... а в корзине мне нужно оставить этот товар и сказать что он продан.

что касается колонок количества ...
есть колонка количества в корзине и количества на складе ... помоему всё понятно.

У меня возник вопрос к Вам а что означает вот эта строка USING(kod)

  Ответить  
 
 автор: Valick   (23.07.2010 в 10:13)   письмо автору
 
   для: m@rchello   (23.07.2010 в 10:04)
 

помоему всё понятно
понятно, что тот человек кто создавал таблицу, абсолютно не слышал о уровнях нормализации и принципах построения БД

  Ответить  
 
 автор: Trianon   (23.07.2010 в 11:05)   письмо автору
 
   для: m@rchello   (23.07.2010 в 10:04)
 

почему из каталога(прайса) удаляются записи?

  Ответить  
 
 автор: Ученик   (23.07.2010 в 11:16)   письмо автору
 
   для: m@rchello   (23.07.2010 в 10:04)
 

>У меня возник вопрос к Вам а что означает вот эта строка USING(kod)

Это указание по какому полю таблицы нужно связать.
Можно еще сделать так

LEFT JOIN 
 Таблица 2 t2 ON t1.kod = t2.kod

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования