|
|
|
| Привет. Хочу сделать выборку примерно таким образом:
SELECT * FROM `table1` AS a, `table2` AS b WHERE (a.code IN (b.codes))
|
Но увы, не работает (0 строк)
table1 имеет структуру id, code(varchar(255)), name(varchar(255))
table2 имеет структуру id, codes(varchar(255)), name(varchar(255))
Для наглядности:
table1:
1, "1.0.0", "Забор";
2, "1.0.1", "Дверь";
3, "1.0.2", "Лопата";
4, "2.0.1", "Собака";
table2:
1, "1.0.0, 1.0.1, 1.0.2", "Неодушевленные"
2, "2.0.1", "Одушевленные".
Таким образом, хочу выбрать неодушевленные и одушевленные предметы, например.
Если подставить напрямую (a.code IN (1.0.0, 1.0.1, 1.0.2, 1.0.3)), все отлично, а вот со столбцом не получается. Как быть? | |
|
|
|
|
|
|
|
для: yadyra
(21.03.2012 в 00:58)
| | 1) во второй таблице у вас в поле значения через запятую, это нарушает принцип нормализации БД (грубо говоря этого быть не должно если не хотите гемора)
2) если необходимо организовать отношение многие ко многим, то нужна третья таблица, называемая таблицей связи
3) (a.code IN (b.codes)) не работает потому что не должно работать :) | |
|
|
|
|
|
|
|
для: Valick
(21.03.2012 в 01:13)
| | Спасибо что так оперативно, иначе бы долго искала ответ. Да, можно сделать еще и таблицу связей, но не хотелось из-за пустяка, таких записей всего-то около 10. Жаль что не работает :) | |
|
|
|
|
|
|
|
для: yadyra
(21.03.2012 в 01:17)
| | таких записей всего-то около 10
тогда пишите одушевленный на против собаки и все, зачем вторая таблица?
__
Спасибо что так оперативно
угу, как раз собрался выключать комп... после пробежки по Дуротару))) | |
|
|
|