Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: извлечение данных из нескольких таблиц
 
 автор: elenaki   (09.12.2004 в 17:24)   письмо автору
 
 

не могу найти на форуме, а мне срочно надо.
MySQL мне упорно выдает произведеHие таблиц. хотя стоит условие WHERE.

select order_details.iddetail,
order_details.pack,
order_details.pack_lenght,
order_details.master_dom,
order_details.transfer_dom,
domains.type,
domains.domain,
domains.owner_handle,
domains.admin_handle,
domains.billing_handle,
domains.tech_handle,
domains.description,
domains.lenght  from order_details, domains
WHERE (order_details.ido='200009'
and order_details.ido=domains.ido
and order_details.idm='12')
ORDER BY order_details.iddetail ASC

   
 
 автор: elenaki   (09.12.2004 в 20:08)   письмо автору
 
   для: elenaki   (09.12.2004 в 17:24)
 

опять пришлось "не мытьем, а катаньем". сделала два запроса. по одному запросу получаю 25 строк, из которых только 5 уникальные. по двум запросам - как надо, 5 строк.

все примеры из книг тоже не работали. ох уж мне эти сказки, ох уж мне эти сказочники! :)

   
 
 автор: cheops   (09.12.2004 в 22:07)   письмо автору
 
   для: elenaki   (09.12.2004 в 17:24)
 

Ага, он и должен возвращать произведение так как нет группировки (GROUP BY) по столбцу одной из базы...

   
 
 автор: glsv (Дизайнер)   (09.12.2004 в 22:45)   письмо автору
 
   для: elenaki   (09.12.2004 в 17:24)
 

Я тоже про GROUP BY сначала подумал...
Но тут как то хитро... Как связаны эти таблицы? Такое чувство, что не только по полю order_details.ido=domains.ido. Либо соответствие неоднозначно.
Сколько записей из таблицы order_details соответвует одной записи из таблицы domains уникальным ido?
И уникальны ли записи с ido в таблице domains? Т.е. может быть в таблице domains больше двух записей с одинаковым ido

Не могу воспроивести эти таблицы. На моих примерах все отрабатывает правильно.

   
 
 автор: cheops   (09.12.2004 в 22:54)   письмо автору
 
   для: glsv (Дизайнер)   (09.12.2004 в 22:45)
 

GROUP BY всё-равно прибъёт лишний вывод - будет выведено лишь столько записей скольким удовлетворяет таблица, содержащая поле по которому группируется выборка...

   
 
 автор: elenaki   (10.12.2004 в 11:46)   письмо автору
 
   для: cheops   (09.12.2004 в 22:54)
 

в таблице domains может быть несколько записей с одинаковым ido (это номер ордера), idm (id заказчика), но разными idd (это номер домена) и iddetails (это детали заказа, относящиеся
к разным доменам одного заказчика, т.к. в одном заказе м.б. несколько доменов) GROUP BY order_details.iddetai выводит 5 записей с разным iddetails, но одинаковыми domain
GROUP BY domains.idd выводит разные domain, но одинаковые iddetails...
если получится, сейчас прицеплю схему таблиц

PS. эту базу не я строила, мне дали ее оптимизировать. там много дублирующейся информации. к тому же надо добавить еще 2 таблицы по схеме domains, только на dns на hosting. я, возможно, перейду в эту контору работать! :) моим новым шефом будет бельгиец надоели греки, которые и задачу толком поставить не могут.

   
 
 автор: glsv (Дизайнер)   (11.12.2004 в 01:16)   письмо автору
 
   для: elenaki   (10.12.2004 в 11:46)
 

Вроде воссоздал я Ваши таблицы. Правда меня пугает дублирование полей. Возможно, у Вас всё еще хуже... :)
Сначала уточним запрос: Нужно вывести детали заказа для каждого заказанного домена. И все это выбирается для одного заказчика.
Я предположил, что iddetails - это уникальное значения для номера домена (idd). Т.е. одному iddetails соответствует один idd. Так?
Тогда может и объединять эти таблицы по равенству iddetails?
Далее группируем по номеру домена idd. Ну и ставим условия idm равен id заказчика.

Примерно так:

select order_details.iddetail, 
order_details.pack, 
order_details.pack_lenght, 
order_details.master_dom, 
order_details.transfer_dom, 
domains.type, 
domains.domain, 
domains.owner_handle, 
domains.admin_handle, 
domains.billing_handle, 
domains.tech_handle, 
domains.description, 
domains.lenght  from order_details, domains 
WHERE (order_details.iddetail=domains.iddetail 
and domains.idm='12') 
GROUP BY domains.idd


PS: Если не получится, то можете реальные таблицы дать? Ну или похожие на реальные :)
Что то меня заинтересовала эта задача :)

>моим новым шефом будет бельгиец надоели греки, которые и задачу толком поставить не могут.
:))

   
 
 автор: glsv (Дизайнер)   (11.12.2004 в 01:18)   письмо автору
 
   для: elenaki   (10.12.2004 в 11:46)
 

Упс, не увидел приложенный файл с таблицами. Ладно, спать пора. Завтра попробую еще посмотреть.

   
 
 автор: elenaki   (11.12.2004 в 13:02)   письмо автору
 
   для: glsv (Дизайнер)   (11.12.2004 в 01:18)
 

спасибо. я не взяла с собой домой эту задачу. мне надо за выходные доделать поиск по статьям на другом сайте. клиент сначала сказал - не торопись, заплачу только в январе, а теперь звонит и спрашивает, готово ли? греческий вариант...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования