imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 01.08.2004, 19:52     # 1
Drualex
Guest
 
Сообщения: n/a

Совмещенные запросы в mySQL

Товарищи, скажите мне, неужели в мускуле нельзя делать совмещенные запросы(запросы из разных таблиц в 1-й БД) на uploade, delete & insert. Я заметил что делать их можно только для select, да и то я был очень огорчен, что в запросе на вывод определенного количества строк(limit *, *) не проходит при запросе из 2 -х таблиц((
Вот моя ситуация: написал модуль новостей, использует БД для хранения. В БД у меня 2 таблицы, в 1-й таблице хранится индекс,тема, дата, и краткое описание. Во 2-й индекс и полное описание. Сделал так, что если вы писали подробную новость, то появляется ссылка на подробнее, если нет то нет. Но фишка в том, что мне приходится делать 2 запроса, из которых 1-й выводят инфу краткую, а 2-й проверяет есть ли подробное описание. И это не единственный момент где мне приходится это делать.
Вообще в мускуле есть такая возможность?
С уважением.
 
Старый 01.08.2004, 20:35     # 2
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Запросы отличные от select для нескольких таблиц делать вроде бы нельзя (на 100% не уверен)
Цитата:
Drualex:
Я заметил что делать их можно только для select, да и то я был очень огорчен, что в запросе на вывод определенного количества строк(limit *, *) не проходит при запросе из 2 -х таблиц((
С этим никаких проблем нету, и limit работает нормально.
Цитата:
Drualex:
Вот моя ситуация: написал модуль новостей, использует БД для хранения. В БД у меня 2 таблицы, в 1-й таблице хранится индекс,тема, дата, и краткое описание. Во 2-й индекс и полное описание. Сделал так, что если вы писали подробную новость, то появляется ссылка на подробнее, если нет то нет. Но фишка в том, что мне приходится делать 2 запроса, из которых 1-й выводят инфу краткую, а 2-й проверяет есть ли подробное описание.
Зачем два запроса делать-то? Вы же сами написали что select для нескольких таблиц работает???
Вот когда обновляете таблицу - возможно придется делать два запроса, но это не слишком принципиальные издержки, ведь 90% запросов это select...
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 01.08.2004, 22:10     # 3
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Цитата:
Hubbitus
Запросы отличные от select для нескольких таблиц делать вроде бы нельзя (на 100% не уверен)
такое я видел только в Oracle. там можно делать тригер на вставку/удаление/одновление представления (view)
Цитата:
Drualex:
Но фишка в том, что мне приходится делать 2 запроса, из которых 1-й выводят инфу краткую, а 2-й проверяет есть ли подробное описание. И это не единственный момент где мне приходится это делать.
Вообще в мускуле есть такая возможность?
select ... from short_news sn left join full_news fn on sn.id = fn.id
если в табличке full_news не будет строки, в котором поле id совпадает с аналогичным в short_news, на месте всех значений этой строки будет стоять null....
но мне кажется, что проще перенести это поле в таблицу с новостями и разрешать ему (полю) принимать значение null.
__________________
Nunc est bibendum
is_absent вне форума  
Старый 02.08.2004, 04:25     # 4
alexhardware
Junior Member
 
Регистрация: 14.01.2004
Сообщения: 83

alexhardware Путь к славе только начался
Приведи пример запроса - интересно. У меня вроде работает с несколькими таблицами без проблем и update и delete и insert
alexhardware вне форума  
Старый 02.08.2004, 10:26     # 5
Drualex
Guest
 
Сообщения: n/a

2is_absent Я тоже использовал конструкцию left join пока мне не понадобилось выводить ограниченное количество сообщенией. При использовании "limit" у меня он просто отказался работать
1-й запрос:
SELECT * FROM description
ORDER BY id DESC
LIMIT $start, $num;
2-й
SELECT * FROM detailed
ORDER BY id DESC
LIMIT $start, $num;
Вот такие дела.
С уважением.
 
Старый 02.08.2004, 10:50     # 6
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Drualex
а где там left join? и зачем нужен лимит во втором случае?
Код:
create table t1 (
  id int unsigned not null auto_increment,
  primary key (id)
);

insert into t1 values(1);
insert into t1 values(2);
insert into t1 values(3);
insert into t1 values(4);
insert into t1 values(5);
insert into t1 values(6);
insert into t1 values(7);
insert into t1 values(8);
insert into t1 values(9);
insert into t1 values(10);
insert into t1 values(12);
insert into t1 values(13);
insert into t1 values(14);
insert into t1 values(123);

create table t2 (
  id int unsigned not null auto_increment,
  primary key (id)
);
insert into t2 values(1);
insert into t2 values(2);
insert into t2 values(4);
insert into t2 values(6);
insert into t2 values(8);
insert into t2 values(100);

select * from t1 left join t2 on t2.id = t1.id limit 0, 4
вот. у меня стоит mysql 3.23, 4.0, 5.. на всех запрос прошел.
__________________
Nunc est bibendum
is_absent вне форума  
Старый 03.08.2004, 18:35     # 7
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
вот еще есть оганичения внешнего ключа в таблицах innoDB(on delete). но тем не менее возможностей по работе со связными данными в принципе и самих возможностей связи этих самых данных много меньше, чем скажем в Sql Server 2K...
__________________
убрано по просьбе администратора
Sheryld вне форума  
Старый 03.08.2004, 22:52     # 8
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Кстати в MySQL 4.x появилась возможность удаления сразу из нескольких таблиц.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 03.08.2004, 23:08     # 9
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Hubbitus
позволю себе не согласится... проверял на MySQL 3.23 delete from t1, t2, t3... работает
__________________
Nunc est bibendum
is_absent вне форума  
Старый 04.08.2004, 00:19     # 10
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
зря я не согласился
Приношу свои извинения. Hubbitus прав относительно возможности удаления из нескольких таблиц одновременно
__________________
Nunc est bibendum
is_absent вне форума  
Старый 04.08.2004, 23:03     # 11
Drualex
Guest
 
Сообщения: n/a

Нда, это видно я просто запрос некорректный ввел. Не могли бы мне пример продемонстрировать, то бы я понял ошибку?
 
Старый 05.08.2004, 07:33     # 12
is_absent
::VIP::
 
Аватар для is_absent
 
Регистрация: 27.01.2004
Адрес: Россия. Барнаул
Пол: Male
Сообщения: 417

is_absent Молодецis_absent Молодецis_absent Молодец
Drualex
Так ты свой покажи... Те два, что ты привел (пост #5) работать должны прекрасно
__________________
Nunc est bibendum
is_absent вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 22:40.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.