|
автор: vladimir_sumy (09.09.2005 в 12:02)  8.1 Кб |
|
| Есть две таблицы:
TABLE doi_item
(
doi_item_id int(8) NOT NULL
item_id int(8) NOT NULL
doi varchar(400) NOT NULL
type varchar(30) NOT NULL
PRIMARY KEY (doi_item_id)
FOREIGN KEY (item_id)
)
TABLE item
(
item_id int(8) NOT NULL
ISBN varchar(13) NOT NULL
title varchar(100) NOT NULL
author varchar(100)
subject varchar(20)
format varchar(30)
media_class varchar(30)
publisher varchar(100)
audience varchar(30)
PRIMARY KEY (item_id)
)
|
По ним ведётся поиск. Есть 4 варианта поиска - По автору(таблица item), названию(таблица item), ИСБН(таблица item) и ДОИ(таблица doi_item).
Выводятся данные в виде
N Title Author ISBN TYPE DOI
1 Interesting Book Olga Dvinyaninova 1234567890 Image 10.1009/1234567
10.1009/12345671
Причём в столбике ДОИ может быть не одна запись. И тогда все ДОИ выводятся в этой же ячейке таблицы. По все молям кроме ДОИ я разобрался как делать поиск..
Я сначла ищу в таблице Item потом в цикле когда пишу данные в таблицу, то создаю запрос в таблице doi_item по полю item_id. Дальше вывести их не сложно.
Вопрос вот в чём: как сделать поиск по ДОИ?. Т. е. ктото ввёл 12345.... и как мне вывести таблицу как я показал выше....(смотрите принтскрин как это должно работать) | |
|
|
|
|
|
|
|
для: vladimir_sumy
(09.09.2005 в 12:02)
| | Попробуйте выполнить этот запрос
SELECT item.item_id AS id,
item.title AS title
item.author AS author
item.ISBN AS ISBN
doi_item.doi AS DOI
FROM item, doi_item
WHERE doi_item.doi = '$DOI' AND
doi_item.item_id = item.item_id
|
где $DOI это тот Дои что вы хотите найти | |
|
|
|
|
автор: vladimir_sumy (09.09.2005 в 13:17) |
|
|
для: napTu3aH
(09.09.2005 в 13:10)
| | Спасибо за ответ, но как теперь мне заполнить таблицу данными.. Мне не просто заполнить таблицу, а так, как показано на картинке! В этом то вся и сложность. | |
|
|
|
|
автор: vladimir_sumy (09.09.2005 в 13:24) |
|
|
для: vladimir_sumy
(09.09.2005 в 13:17)
| | Допустим пользователь ввёл 33 в поле ДОИ. Вот на картинке пример того, что выдала БД. А как получить только первую строку?Как схитрить?) У каждого поля есть уникальный идентификатор это item_id. Если бы можно было получить строку с минимальным значением. Видимо просто задачку такую не решить.... | |
|
|
|
|
|
|
|
для: vladimir_sumy
(09.09.2005 в 13:24)
| | Для этого предназначена конструкция GROUP BY
SELECT item.item_id AS id,
item.title AS title
item.author AS author
item.ISBN AS ISBN
doi_item.doi AS DOI
FROM item, doi_item
WHERE doi_item.doi = '$DOI' AND
doi_item.item_id = item.item_id
GROUP BY id
|
| |
|
|
|
|
автор: vladimir_sumy (09.09.2005 в 14:45) |
|
|
для: cheops
(09.09.2005 в 14:32)
| | Вы не поняли сути вопроса. Когда я ищу по автору, названию и ИСБН, то получию результаты и после этого смотрю сколько дои у меня в другой таблице соответствует каждой записи. Когда же ищу по ДОИ, то получаю то, что я показывал на картинке выше. Вся эта головная боль из-за особенного представлени данных результатов поиска. Не просто таблица, а в виде дерева... | |
|
|
|
|
|
|
|
для: vladimir_sumy
(09.09.2005 в 14:45)
| | Я если честно, просто не могу сообразить как лучше поступить из-за названий, так как не знаю что такое ДОИ - это просто ключ или у него имеется физический смысл? | |
|
|
|
|
автор: vladimir_sumy (09.09.2005 в 15:26) |
|
|
для: cheops
(09.09.2005 в 15:17)
| | какой-то регистрационный номер. даётся владельцу ИСБН... У одного ИСБН может быть много ДОИ но не наоборот | |
|
|
|
|
|
|
|
для: vladimir_sumy
(09.09.2005 в 15:26)
| | А один ДОИ может принадлежать разным ИСБН? | |
|
|
|
|
автор: vladimir_sumy (09.09.2005 в 15:29) |
|
|
для: cheops
(09.09.2005 в 15:17)
| | Да и разве важно? Вид который я хочу получить я уже показал... осталось сделать только выборку... вот только как? | |
|
|
|
|
|
|
|
для: cheops
(09.09.2005 в 14:32)
| | Может сделать сортировку по группам в Мускуле, а потом средствами ПХП проверить ид и автора на уникальность, и разные Дои одного автора вывести в одну ячейку через переход строки. | |
|
|
|
|
автор: vladimir_sumy (09.09.2005 в 22:02) |
|
|
для: cheops
(09.09.2005 в 14:32)
| | Всё таки это то, что мне было нужно! Большое спасибо! Респект!)
И другим тоже спасибо! | |
|
|
|