Помогите составить запрос (или подскажите как).

q2zx

Новичок
Помогите составить запрос (или подскажите как).

Необходимо из таблиц вида id:name1:name2:name3... и id:name:data. получить все значения data для name1,name2,name3...
PS: Не судите строго, SQL изучаю недавно.
 

Royal Flash

-=MaestrO=-
Помоему, таблицы у тебя составлены совсем не правильно. Зачем в таблице с датами, например, столбец ID? Если этот ID = ID из первой таблицы, то дату хранить нужно не в отдельной таблице, а в той-же, где лежат name. Объясни, для каких целей созавались таблицы с описываемой структурой.
PS: Не судите строго, SQL изучаю недавно.
Наталкивает на мысль, что всеже таблицы у тебя "кривоваты".
 

q2zx

Новичок
Сорри. Подразумевалось не дата, а просто любые данные, но не в этом суть. ID - независимые первичные ключи разные для обеих таблиц. Просто в первой таблице хранится список имен для конкретного ID. В другой таблице полный список имен и соответствующие им данные. Данные в первой таблице хранить неохота, т.к. будет частое дублирование. Сам понимаю что структура не та, но ничего лучше пока не придумал. Подскажите верный путь. Буду благодарен за помощь.
 

SelenIT

IT-лунатик :)
q2zx
У тебя, по-видимому, отношение 1:n. Убери в первой таблице все поля с именами, а во вторую добавь одно поле и пиши туда соответствующий каждому имени id из первой таблицы.
 

q2zx

Новичок
SelenIT
У меня отношение M:N. Как нормализовать незнаю, с помощью промежуточной таблицы накладно т.к. придется поддерживать и ее.
Убери в первой таблице все поля с именами
Тогда там ничего и не останется :)

соответствующий каждому имени id из первой таблицы.
В первой таблице нет ID для имени , есть ID для списка имен.

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

SelenIT

IT-лунатик :)
q2zx
нет ID для имени , есть ID для списка имен
Если id чего-то, равный 25, соответствует множеству имен [Петя:Вася:Коля], разве из этого не следует, что каждому из этих имен соответствует id=25 этого чего-то?
Если это не подходит - уточни задачу. Отношения M:N тут я пока не увидел. Кстати, твоя таблица 1 - по сути тоже промежуточная таблица, только жутко неудобная.
 

q2zx

Новичок
SelenIT
Спасибо ОГРОМНОЕ. Наконец дошло. Буду переделывать.
(Тему можно закрыть).

-~{}~ 24.10.05 22:39:

Блин!!! Немогу. Знаний маловато. За один запрос получаю данные только для одного имени.

SELECT `data` FROM `table1`,`table2` WHERE `name`=`name1`
SELECT `data` FROM `table1`,`table2` WHERE `name`=`name2`
.............................................................................

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

SelenIT

IT-лунатик :)
q2zx
[sql]SELECT `data` FROM `table1`,`table2` WHERE `name`IN ('name1','name2',...)[/sql]не подойдет?
 

q2zx

Новичок
SelenIT
Неа. Делает выборку если 'name' во ВСЕХ полях 'name1','name2'...
 
Сверху