Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

запрос

271
18 августа 2005 года
MrXaK
721 / / 31.12.2002
бд mysql
есть таблица table1 с полями id, ...
есть таблица table2 с полями id, parent, status, ...
надо выбрать поля из table1 такие, что table2.parent = table1.id, table2.status = 1;
только записей в table2 c полем parent равным id может быть не одна, но поля table1 должны быть выбраны только один раз (то есть LIMIT 1 не катит, т.к. LIMIT здесь отрежет следующие строки в table1).. и сделать это всё за один запрос...
1.8K
18 августа 2005 года
BIKTOP
91 / / 06.04.2005
Цитата:
Originally posted by Mr.Hacker
бд mysql
есть таблица table1 с полями id, ...
есть таблица table2 с полями id, parent, status, ...
надо выбрать поля из table1 такие, что table2.parent = table1.id, table2.status = 1;
только записей в table2 c полем parent равным id может быть не одна, но поля table1 должны быть выбраны только один раз (то есть LIMIT 1 не катит, т.к. LIMIT здесь отрежет следующие строки в table1).. и сделать это всё за один запрос...



SELECT DISTINCT ...

271
18 августа 2005 года
MrXaK
721 / / 31.12.2002
можно поподробнее? я с этой командой не работал вообще, ман читать влом)
15
18 августа 2005 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by Mr.Hacker
бд mysql
есть таблица table1 с полями id, ...
есть таблица table2 с полями id, parent, status, ...
надо выбрать поля из table1 такие, что table2.parent = table1.id, table2.status = 1;
только записей в table2 c полем parent равным id может быть не одна, но поля table1 должны быть выбраны только один раз (то есть LIMIT 1 не катит, т.к. LIMIT здесь отрежет следующие строки в table1).. и сделать это всё за один запрос...


Поясни как они связываються (просто понять не могу, если table1.id - это что-то, что связывает несколько колонок из table2, то значение table1.id должно быть уникальным, если нет, то я немногу понять их связь) и ещё все поля и за что они отвечают, возможно тебе нужно будет перестроить бд.

271
18 августа 2005 года
MrXaK
721 / / 31.12.2002
Цитата:
Originally posted by shaelf
Поясни как они связываються (просто понять не могу, если table1.id - это что-то, что связывает несколько колонок из table2, то значение table1.id должно быть уникальным, если нет, то я немногу понять их связь) и ещё все поля и за что они отвечают, возможно тебе нужно будет перестроить бд.


table1.id уникально...
бд перестраивать неохота))
связь логически представляема в виде "новость"-"комментарии к ней"...

15
18 августа 2005 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by Mr.Hacker
table1.id уникально...
бд перестраивать неохота))
связь логически представляема в виде "новость"-"комментарии к ней"...


Я сейчас напишу примерно как (это моё мнение) должно быть. news(id, news(дадее по желанию: автор, время и т.д.)), comment(id, id_news, comment(далее так же по желанию:)).
выводиться новость... Неохота заново писать, просто минут пять назад это делал воттут :). Посмотри и всё поймешь. Если у тебя база немного не так организованна, то имхо лучше её сразу переделать (мне в своё время с моим первым магазином тоже говорили: "пока не забил, переделай", дураком был, непослушал и расхлёбывал 3 месяца пока сайт переделывать не начал:)).

271
18 августа 2005 года
MrXaK
721 / / 31.12.2002
да сейчас вопрос не в организации, а как так выбрать (как я написал сверху)... надо одним запросом выбрать новости к которым есть коментарии, только коментариев может быть много, а новость выбирать надо только по одному разу))
з.ы. на самом деле у меня не новости, я просто аналогию привёл...
1.8K
18 августа 2005 года
BIKTOP
91 / / 06.04.2005
Цитата:
Originally posted by Mr.Hacker
можно поподробнее? я с этой командой не работал вообще, ман читать влом)



SELECT DISTINCT table1.id
FROM table1, table2
WHERE table1.id = table2.parent
AND table2.status = 1

Должно работать...

15
18 августа 2005 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by BIKTOP
SELECT DISTINCT table1.id
FROM table1, table2
WHERE table1.id = table2.parent
AND table2.status = 1

Должно работать...


Мне кажеться ему LEFT JOIN нужен... Дай мне полную структуру таблицы и укажи что на что ссылаеться, тогда помогу (при условии что это не заработает).

271
19 августа 2005 года
MrXaK
721 / / 31.12.2002
Цитата:
Originally posted by shaelf
Мне кажеться ему LEFT JOIN нужен... Дай мне полную структуру таблицы и укажи что на что ссылаеться, тогда помогу (при условии что это не заработает).


а чем LEFT JOIN от INNER JOIN отличается? влом ман читать, а сам я с этим плохо разбираюсь...
структуру я ж написал
table1:
id int
.... остальные поля не нужны...

table2:
id int
parent int
status int
.... остальные поля не нужны...

table1.id уникальное
table2.id тоже уникальное, но здесь не нужно
table2.parent - указывает, с каким table1.id оно связано... записей с одинаковым table2.parent может быть несколько (table1.id у них разное естественно, в этом проблема объединения)...

15
19 августа 2005 года
shaelf
2.7K / / 04.05.2005
Попробуй это (извини, пробывать не где)
 
Код:
SELECT table1* FROM table1 LEFT JOIN table2 ON table1.id = table2.parent

Тебе нужно что-то типа этого. Если что-то не то, то попробуй поменять местами.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог