[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: SQL запросы и подстановка
Страницы: 1, 2
rusbolik
Доброго времени суток.
Помогите новичку пожалуйста

У меня две таблицы
baza_tovarov и baza_color
в baza_tovarov полное описание товаров, включая цветовые CVET1, CVET2, CVET3 и т.д., все эти CVET имеют ID цвета.
в baza_color этим ID цвета присвоены названия цветов

Задача:
вывести через php Название цвета согласно ID из таблицы baza_color

Если что-то не так объяснил, извините, не силен в спец словах пока
Valick
rusbolik, то что база данных спроектирована неправильно имеет значение?



_____________
Стимулятор ~yoomoney - 41001303250491
rusbolik
я сам ее не составлял. сейчас пытаюсь доработать вывод данных. возможно что и не правильно
Valick
rusbolik, я вам говорю, что БД 100% спроектирована с нарушениями логики и "законов жанра"
эдесь отношение многие ко многим, следовательно должно быть три таблицы
таблица товаров, таблица цветов и таблица свфзи товара и цвета

_____________
Стимулятор ~yoomoney - 41001303250491
rusbolik
baza_tovarov я думаю что это она. например в ней стоит CVET1 = 1 в таблице baza_color ID = 1 имеет имя белый
rusbolik
на самом деле у меня получилось вытянуть этот номер цвета из baza_tovarov
но хочется чтобы было его название из baza_color
Valick
чтобы вытащить все цвета одного товара, вам надо сделать три запроса, а точнее сколько полей цветов в таблице товаров, столько и запросов

при такой архитектуре БД (руки поотшибать вместе с головой, тому кто её "проектировал")
вам легче считать таблицу цветов в массив и уже средствами РНР подставлять цвета по определенным номерам, это два запроса... даже если там двадцать или двести полей цветов
но это бред, необходима реорганизация БД, тогда понадобться всего один запрос с соединением.

_____________
Стимулятор ~yoomoney - 41001303250491
rusbolik
подскажите пожалуйста, что реорганизировать? или может на мысль натолкните как правильно сотворить.

как то я завис.
мне казалось что все правильно
в одной таблице все по товару а потом таблички в которых присваиваются имена цифрам в основной
Valick
таблица товаров baza_tovarov
где есть идентификатор товара idt

таблица цветов baza_color
где есть идентификатор сцвета idc

и таблица связи tova_colo
idt | idc
где примари кей можно на оба поля

_____________
Стимулятор ~yoomoney - 41001303250491
rusbolik
я понял что я ничего вообще не понимаю. пора идти учится вновь
Спасибо, дорогой, Valick что потратил на меня время
Valick
запрос на выбор всех цветов для всех товаров будет как-то так
SELELCT t.name, c.color
FROM baza_tovarov AS t
RIGHT JOIN tova_colo AS s USING(idt)
LEFT JOIN baza_color AS c USING(idc)
ORDER BY t.idt


_____________
Стимулятор ~yoomoney - 41001303250491
rusbolik
опа!! не сложно будет по русски описать?
я понял выборку, понял присоединение понял порядок. а вот что за t.name, t.color не понял. догадываясь - это наименование товара и цвет из общей baza_tovarov
Valick
ну как известно программисты народ ленивый поэтому названию таблицы baza_tovarov мы дали второе имя t (алиас AS вот так- baza_tovarov AS t ) чтобы в t.name не писать baza_tovarov.name . Да и после присвоения алиаса, к основному имени уже нельзя обращаться.
Соответсвенно c.color - это аналог baza_color.color.
При соединении таблиц СУРБД должна знать какое поле из какой таблицы надо брать.

_____________
Стимулятор ~yoomoney - 41001303250491
dr.nomore
Цитата (rusbolik @ 11.12.2013 - 21:09)
У меня две таблицы
baza_tovarov и baza_color
в baza_tovarov полное описание товаров, включая цветовые CVET1, CVET2, CVET3 и т.д., все эти CVET имеют ID цвета.
в baza_color этим ID цвета присвоены названия цветов

Задача:
вывести через php Название цвета согласно ID из таблицы baza_color

Если что-то не так объяснил, извините, не силен в спец словах пока

Типичный список. Надеюсь у вас один товар не может быть разного цвета. Если может - кто там советует отрывать руки - я советую выколоть глаза. На каждый атрибут - артикул. Следовательно 1 запись о товаре - 1 цвет. Этим цветом ежу понятно может быть "белый верх, черный низ", или "полосатый красно-желтый" и тп.

Ну вот, цепляете этот список к товарам и все. Хрестоматийно.

По обстоятельствам можно завести побольше полей на цвет, типа основной, дополнительный. И линковать тот же список.

Соединяется так

select * from tovar join color on tovar.color_id = color.color_id;
sergeiss
Цитата (dr.nomore @ 16.12.2013 - 08:34)
Надеюсь у вас один товар не может быть разного цвета.

Было бы странно... А я вот надеюсь, что в "правильных" системах как раз товары могут быть разного цвета smile.gif

Та структура базы, о которой чуть ранее в этой теме говорил Valick, как раз и ориентирована на то, что у каждого товара может быть разное количество цветов. И это правильно! Хочешь ты, допустим, футболку. Синюю. Но там забит только один цвет - красный. Потому что программер так сделал. И тебе говорят, мол, извини дорогой, нету синей футболки! Типа того, что все вопросы к организатору БД.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.