Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

15.06.2008, 16:45
|
|
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме: 804931
Репутация:
526
|
|
Dtw Мускул стал держать хранимые процедуры начиная с версии 5.0... а стабильно и того позже. Думаю дело в этом)
|
|
|

15.06.2008, 17:35
|
|
Участник форума
Регистрация: 15.02.2007
Сообщений: 133
Провел на форуме: 370092
Репутация:
52
|
|
Кстати да,солидарен.
|
|
|

21.06.2008, 18:52
|
|
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме: 804931
Репутация:
526
|
|
Впринципе все легко - одно НО.
По данной структуре не пойму (хотя особо не думал) вот это:
7.Вывести предметы, читающиеся хотя бы в двух семестрах.
Т.е. в таблице м.б. нсколько одноименных предметов с разными идентификаторами? Другого варианта не вижу
|
|
|

21.06.2008, 22:04
|
|
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме: 804931
Репутация:
526
|
|
Структура таблиц
Код:
CREATE TABLE `Lecturers` (
`id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`fio` VARCHAR( 100 ) NOT NULL ,
`rank` VARCHAR( 40 ) NOT NULL ,
`post` VARCHAR( 40 ) NOT NULL ,
PRIMARY KEY ( `id` )
);
CREATE TABLE `disciplines` (
`id` int(5) unsigned NOT NULL auto_increment,
`title` varchar(70) NOT NULL,
`semestr` int(2) NOT NULL,
`form` enum('exam','setoff','other') NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `schedule` (
`id_lector` int(5) UNSIGNED NOT NULL,
`id_discipline` int(5) UNSIGNED NOT NULL,
`weekday` enum('Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье') NOT NULL,
PRIMARY KEY (`id_lector`,`id_discipline`),
FOREIGN KEY (`id_lector`) REFERENCES `lecturers`(`id`),
FOREIGN KEY (`id_discipline`) REFERENCES `disciplines`(`id`)
);
Если что не нравится - можешь поменять 
Вот собственно сами запросы:
Код:
1) SELECT * FROM `lecturers` WHERE `rank`='Кандидат Наук'
----------------------
2)SELECT DISTINCT `fio`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
JOIN `lecturers` as `l` on `l`.`id`=`sc`.`id_lector`
WHERE `d`.`form`='exam' AND (`id_lector`,`semestr`) <> ALL(
SELECT `id_lector`,`semestr`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
WHERE `d`.`form`<>'exam'
)
----------------------
3) SELECT DISTINCT `fio`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
JOIN `lecturers` as `l` on `l`.`id`=`sc`.`id_lector`
WHERE `d`.`form`='setoff'
----------------------
4) SELECT * FROM lecturers`
----------------------
5) SELECT DISTINCT `l`.`fio`
FROM `lecturers` as `l`
JOIN `schedule` as `sc` on `l`.`id`=`sc`.`id_lector`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
WHERE `l`.`id` <> ALL(
SELECT `l`.`id`
FROM `lecturers` as `l`
JOIN `schedule` as `sc` on `l`.`id`=`sc`.`id_lector`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
WHERE `d`.`semestr` NOT IN (3,4))
----------------------
6) SELECT `fio`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
JOIN `lecturers` as `l` on `l`.`id`=`sc`.`id_lector`
WHERE `l`.`rank` = 'Кандидат Наук' AND (`d`.`semestr`=7 OR `d`.`semestr`=8)
----------------------
7) SELECT `title`
FROM `disciplines`
GROUP BY `title`
HAVING count(DISTINCT `semestr`)>1
----------------------
8) SELECT `l`.`fio`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
JOIN `lecturers` as `l` on `l`.`id`=`sc`.`id_lector`
WHERE `l`.`rank`='Доцент'
GROUP BY `l`.`id`
HAVING count(DISTINCT `d`.`title`)=3
----------------------
9) SELECT `l`.`fio`
FROM `schedule` as `sc`
JOIN `disciplines` as `d` on `sc`.`id_discipline`=`d`.`id`
JOIN `lecturers` as `l` on `l`.`id`=`sc`.`id_lector`
WHERE `l`.`rank`='Доктор Наук' AND `d`.`form`='exam' AND (`d`.`semestr`=9 OR `d`.`semestr`=10)
Сильно не тестил - если что бут не так - то стучись, помогу.
|
|
|

30.06.2008, 18:46
|
|
Участник форума
Регистрация: 11.05.2008
Сообщений: 202
Провел на форуме: 420713
Репутация:
104
|
|
Помогите такая проблема
что при таком запросе он достает многа одинаковых фотах
в чем может быть ошибка ?
SELECT jos_vm_product.product_thumb_image FROM jos_vm_product,jos_vm_product_category_xref where category_id
Мне надо выбрать с Бд таблицы
jos_vm_product,jos_vm_product_category_xref
Это таблицы компонент джумлы virtuemart..
как бы запросом достаю все фото на продукт ток он их че выводи 5 раз одно фото однаково
PHP код:
$query="SELECT jos_vm_product.product_thumb_image FROM jos_vm_product,jos_vm_product_category_xref where category_id=$id ";
return $res2 = mysql_query($query);
|
|
|

30.06.2008, 19:05
|
|
Участник форума
Регистрация: 11.05.2008
Сообщений: 202
Провел на форуме: 420713
Репутация:
104
|
|
Запрос
приложение ......

|
|
|

30.06.2008, 19:16
|
|
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме: 849583
Репутация:
210
|
|
Что бы не
че выводи 5 раз одно фото однаково
,
а всяко-разно
обьясни какие именно поля нужно выбирать, и из каких таблиц И ПО КАКОМУ УСЛОВИЮ
Данный запрос выбирает поле product_thumb_image из таблицы jos_vm_product
по неизвестно какому условию, возможно правильно "WHERE jos_vm_product.category_id="
или так
$query="
SELECT product_thumb_image
FROM jos_vm_product
WHERE category_id IN(
SELECT id
FROM jos_vm_product_category_xref
WHERE ...
)";
Какие поля в jos_vm_product_category_xref ?
|
|
|

30.06.2008, 19:19
|
|
Участник форума
Регистрация: 11.05.2008
Сообщений: 202
Провел на форуме: 420713
Репутация:
104
|
|
Поля такие
category_id product_id product_list
123 99 NULL
таблице jos_vm_product .поле product_thumb_image
нет category_id а есть product_id
Последний раз редактировалось DTW; 30.06.2008 в 19:25..
|
|
|

30.06.2008, 19:26
|
|
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме: 849583
Репутация:
210
|
|
Попробуй так
$query="
SELECT product_thumb_image
FROM jos_vm_product
WHERE product_id IN(
SELECT product_id
FROM jos_vm_product_category_xref
WHERE category_id = $id
)";
Должно работать
пс И не забывай фильтровать $id, хотя бы так
$id = (int)$id;
Последний раз редактировалось Naydav; 30.06.2008 в 19:29..
|
|
|

30.06.2008, 19:36
|
|
Участник форума
Регистрация: 11.05.2008
Сообщений: 202
Провел на форуме: 420713
Репутация:
104
|
|
Спс огромное все работает
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|