|
|
|
| Подскажите, пжлста.
Есть 2 таблицы одна основная с полями id,f,b,c,d другая с полями id,f,b,c,d но в полях содержит значения 0 или 1 id основной = id вспомогательной.
Так вот в чем вопрос ....
необходимо из основной таблицы вывести все записи которые в вспомогательной = 1.
Может подскажет кто , как это сделать ? | |
|
|
|
|
|
|
|
для: bekass
(28.08.2008 в 11:20)
| | пример?
И указывайте названия таблиц. | |
|
|
|
|
|
|
|
для: Trianon
(28.08.2008 в 11:27)
| | пример
в основной таблице
id =102
a = "Владимир"
b = "Иванов"
c = "Сергеевич"
в спомогательной
id =102
a = 1
b = 0
c = 1
нужно чтобы запрос выдал данные
"Владимир" Сергеевич" | |
|
|
|
|
|
|
|
для: Bekass
(28.08.2008 в 11:32)
| |
SELECT
CONCAT(
'', IF(s.a, p.a, '')
,' ', IF(s.b, p.b, '')
,' ', IF(s.c, p.c, '')
) AS res
FROM `primtable` p
JOIN `secondtable` s USING(id)
|
| |
|
|
|
|
|
|
|
для: Trianon
(28.08.2008 в 11:39)
| | Дело в то что полей a,d,c... z довольно много (штук 20), поэтому IF(s.a, p.a, '') для каждого поля довольно трудоемко, может какой-то другой путь естб, учитывая что имена полей в основной и вспомогательной одинаковы. | |
|
|
|
|
|
|
|
для: Bekass
(28.08.2008 в 12:19)
| | данные в таблицах не хранят в горизонталь. Это не эксель-файл.
Вы криво спроектировали БД - теперь расхлебывайте.
>поэтому IF(s.a, p.a, '') для каждого поля довольно трудоемко,
для Вашего случая - вполне малая цена. | |
|
|
|
|
|
|
|
для: Trianon
(28.08.2008 в 12:21)
| | А не могли бы Вы посоветовать, как для такого случая удобнее было бы спроектировать БД? | |
|
|
|
|
|
|
|
для: Bekass
(28.08.2008 в 12:37)
| |
table main( id, .....)
101 ...
102 ...
103 ...
|
table opts(id, optname)
1 Имя
2 Фамилия
3 Отчество
|
table optval(id, main_id, opt_id, opt_val)
150 102 1 'Владимир'
151 102 2 'Иванов'
152 102 3 'Сергеевич'
|
| |
|
|
|