запрос SQL из HTML
| Автор
| Сообщение |
|
|
|
Цитата |
|
Доброго времени суток всем, просьба в помощи.
В общем есть прога, база основана на SQL, пользователи работают с этой базай посредством доступа через HTML. (в HTML используется как HTML так и ASP и JAVA Script).
Проблема вот в чём:
Есть таблица содержащая две колонки в одной из них разные значения в другой попадаются одинаковые.
К примеру первая таблица содержит имена клиентов, вторая код их заболевания:
Иванов - 1
Петров - 2
Сидоров -3
Петросян -2
Григорий -1
Андреев -3
и т.д.
требуется выбрать из SQL, группы пользователей с одинаковыми диагнозами
т.е. чтобы диагнозы на станичке HTML (где предварительно написана таблица) были бы сверху одной строкой, а под ними соответствующие фамилии:
это так:
1 2 3
Иванов Петров Сидоров
Григорий Петросян Андреев
Это дожны видеть пользователи на своей HTML странице.
.....пишу выборку в HTML страничке она запрашивает базу:
SQL="select 'диагноз', 'фамилия' from 'таблица' "
выбирает всё. (проверил на QA)
теперь в HTML колонке со значением 1 придаём условие if 'диагноз'=1 then 'фамилия' end if
далее колонке со значением 2 придаём условие if 'диагноз'=2 then 'фамилия' end if
колонке со значением 3 придаём условие if 'диагноз'=3 then 'фамилия' end if
теперь начинаются поблемы пользователи на html страничке видят такую не стандартную таблицу:
1 2 3
Иванов
Григорий
Петров
Петросян
Сидоров
Андреев
т.е. заканчивается одна колонка только потом идёт следующая, т.е. уровни колонок в HTML оказваются друг за другом, разные.
вопрос/проблемы: как эту таблицу сделать чтобы все уровни колонок совпадали (всё это в HTML конечно же) т.е. вид должен быть такой:
1 2 3
Иванов Петров Сидоров
Григорий Петросян Андреев
Уже использовал как group by так и order by но это только упорядочивает строки, а таблица так и остаётся лесенкой.
Помогите кто знает, может это из-за кода HTML а может в SQL что то не так делаю.
Заранее спасибо.
если не затруднит пересылайте ответ на:
alex_aa71@mail.ru
P.S. ещё раз всем спасибо. |
|
| В начало |
|
 |
|
|
 |
 dogma
aka Достоевский

Возраст: 27
Знак зодиака: 
Зарегистрирован: 20.12.2004
Сообщения: 1702
Откуда: Холмск
|
|
|
Цитата |
|
Сначала выводишь первый столбец, затем второй, ну а после третий. Что здесь непонятного? _________________ Bonum initium est dimidium facti
SQL-задачи (on-line) |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| dogma писал(а): | | Сначала выводишь первый столбец, затем второй, ну а после третий. Что здесь непонятного? |
Не очень понял, в смысле столбец в SQL или в HTML это две разные вещи, а каким образом написать в коде???
Подскажите плиз в коде неделю бьюсь, вообще то первый раз с таким столкнулся.
Заранее спасибо. |
|
| В начало |
|
 |
 Guffi
Энтузиаст

Возраст: 36
Знак зодиака: 
Зарегистрирован: 06.08.2004
Сообщения: 250
Откуда: Лангепас
|
|
|
Цитата |
|
| Цитата: | | Не очень понял, в смысле столбец в SQL или в HTML это две разные вещи, а каким образом написать в коде??? |
Приведи свой код, на нем тебе можно будет показать что не так... _________________ Не сами по себе мы хороши, а фону из говна благодаря |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Guffi писал(а): | | Цитата: | | Не очень понял, в смысле столбец в SQL или в HTML это две разные вещи, а каким образом написать в коде??? |
Приведи свой код, на нем тебе можно будет показать что не так... |
Ребята всё вначале темы подробно описал:
Повторюсь\\\
Проблема вот в чём:
Есть таблица содержащая две колонки в одной из них разные значения в другой попадаются одинаковые.
К примеру первая таблица содержит имена клиентов, вторая код их заболевания:
Иванов - 1
Петров - 2
Сидоров -3
Петросян -2
Григорий -1
Андреев -3
и т.д.
требуется выбрать из SQL, группы пользователей с одинаковыми диагнозами
т.е. чтобы диагнозы на станичке HTML (где предварительно написана таблица) были бы сверху одной строкой, а под ними соответствующие фамилии:
это так:
1 2 3
Иванов Петров Сидоров
Григорий Петросян Андреев
Это дожны видеть пользователи на своей HTML странице.
.....пишу выборку в HTML страничке она запрашивает базу:
SQL="select 'диагноз', 'фамилия' from 'таблица' "
выбирает всё. (проверил на QA)
теперь в HTML колонке со значением 1 придаём условие if 'диагноз'=1 then 'фамилия' end if
далее колонке со значением 2 придаём условие if 'диагноз'=2 then 'фамилия' end if
колонке со значением 3 придаём условие if 'диагноз'=3 then 'фамилия' end if
теперь начинаются поблемы пользователи на html страничке видят такую не стандартную таблицу:
1 2 3
Иванов
Григорий
Петров
Петросян
Сидоров
Андреев
т.е. заканчивается одна колонка только потом идёт следующая, т.е. уровни колонок в HTML оказваются друг за другом, разные.
вопрос/проблемы: как эту таблицу сделать чтобы все уровни колонок совпадали (всё это в HTML конечно же) т.е. вид должен быть такой:
1 2 3
Иванов Петров Сидоров
Григорий Петросян Андреев
Уже использовал как group by так и order by но это только упорядочивает строки, а таблица так и остаётся лесенкой.
все условия If и команда SQL пишется на ASP (в смысле на front page это особой роли в HTML не играет)/
Головная боль как сделать чтоб была нормальная таблица, а не получались колонки лесенкой!!!!
\\\\\
Помогите, а то шеф голову рвёт, блин одним програмистом меньше будет.
Спасибо всем заранее.
P.S. Могу выслать на почту файлик в формате ASP. |
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
Напиши лучше здесь, что у тебя получилось - и посмотрим, где у тебя ошибка _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Цитата: | Уже использовал как group by так и order by но это только упорядочивает строки, а таблица так и остаётся лесенкой.
Помогите кто знает, может это из-за кода HTML а может в SQL что то не так делаю.
|
Отлаживай программу поэтапно. Смотри сперва результат SQL-запроса. Если в нем порядок, значит проблема в построении HTML таблицы. У тебя явно непорядок с голов.. пардон, с HTML. Если что-то непонятно, перечитывай мануалы, экспериментируй. Если трудно представить процесс в голове, нарисуй его на бумаге. Поищи в интернете готовые решения.
| Цитата: | | Помогите, а то шеф голову рвёт, блин одним програмистом меньше будет. |
Задумчиво Может, оно и к лучшему.. |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Хантер писал(а): | | Цитата: | Уже использовал как group by так и order by но это только упорядочивает строки, а таблица так и остаётся лесенкой.
Помогите кто знает, может это из-за кода HTML а может в SQL что то не так делаю.
|
Отлаживай программу поэтапно. Смотри сперва результат SQL-запроса. Если в нем порядок, значит проблема в построении HTML таблицы. У тебя явно непорядок с голов.. пардон, с HTML. Если что-то непонятно, перечитывай мануалы, экспериментируй. Если трудно представить процесс в голове, нарисуй его на бумаге. Поищи в интернете готовые решения.
| Цитата: | | Помогите, а то шеф голову рвёт, блин одним програмистом меньше будет. |
Задумчиво Может, оно и к лучшему.. |
Вот именно чтот в HTML я не могу её никак построить, весь запрос отлажен всё ОК (проверял на QA) думаю всё дело в том когда я пишу условие If=1 (заключение по болезни 1) он выбирает первое условие, а затем пишу If=2 вот здесь то и проблема он мне в HTML таблицу выдаёт лесенкой, т.е. заканчивается первая колонка начинается соседняя вторая, но только после окончания первой колонки, а как сделать чтоб колонки начинались все с одного уровня т.е. с первой строки (см. выше привожу полностью в коде HTML страницу) ??????? |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| DrPass писал(а): | | Напиши лучше здесь, что у тебя получилось - и посмотрим, где у тебя ошибка |
привожу полностью страничку HTML в коде, можнозакинуть и посмотреть в действии, (особого секрета не представляет)
сначала представим таблицу название 'bolnie' в SQL из которой будем выбирать:
name diagnoz
Иванов - 1
Петров - 2
Сидоров -3
Петросян -2
Григорий -1
Андреев -3
страница.....
////////
<--- ссылка на файл коннекта с базой (проблем нет)
<%
'Запрос
set rs=server.createobject("adodb.recordset")
sqltext="select name, diagnoz from bolnie where (diagnoz=1 or diagnoz=2 or diagnoz=3) order by diagnoz"
'Response.Write(sqltext)
'Response.End
rs.open sqltext,conn,1,1
%>
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Новая страница 1</title>
<style>
<!--
-->
</style>
</head>
<body>
<p align="center"><span lang="ru"><b>Список
больных</b></span></p>
<table border="1" width="583" height="54">
<tr>
<td width="90" align="center" class="normalfont">
<i>
<strong><font size="2">№</font></strong></i></td>
<td height="23" width="116" align="center"><i><b><span lang="ru">
<font size="2">Сердечники</font></span></b></i></td>
<td height="23" width="170" align="center"><i><b><span lang="ru">
<font size="2">Почечники</font></span></b></i></td>
<td height="23" width="179" align="center"><i><b><span lang="ru">
<font size="2">Язвенники</font></span></b></i></td>
</tr>
<tr>
<%
'придаём значение 'i' для построения фамилий в колонку
dim i
i=1
do while not rs.EOF
<%' Вот здесь начинается проблема %>
%>
<td width="90" align="center" class="normalfont"><font size="2"><%=i%></font></td>
<td height="23" width="116" align="center"><font size="2"><%if rs("diagnoz")="1" then %><%=rs("name")%><%end if%></font></td>
<td height="23" width="170" align="center"><font size="2"><%if rs("diagnoz")="2" then %><%=rs("name")%><%end if%></font></td>
<td height="23" width="179" align="center"><font size="2"><%if rs("diagnoz")="3" then %><%=rs("name")%><%end if%></font></td>
</tr>
<%
i=i+1
rs.movenext
loop
%>
</table>
</body>
</html>
\\\\\\\\\\\\\\\\\\\\
Вот такой вот файлик не хилый.
Заранее спасибо. |
|
| В начало |
|
 |
|
|
 |
|
|
|
Цитата |
|
Блин, если посмотреть на результирующий HTML-код, то все сразу станет ясно.
У тебя тег <TR> ставится один раз до цикла, а тег </TR> ставится в каждом проходе цикла. Это грубая ошибка.
Далее, строки результата у тебя в виде тиаблицы "имя - диагноз". При каждом проходе в HTML таблицу добавляется новая строка с двумя пустыми колонками и одной непустой. Это неоптимальное решение, будет много пустых ячеек в таблице.
Тебе нужно либо перестроить запрос так, чтобы он тебе давал готовую таблицу в нужном виде (чтобы ее потом перегнать в HTML), либо результат запроса сгруппировать по колонкам и вывести по строкам. Поскольку я не знаю ASP, подробностей не расскажу. |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Хантер сенкс большое,
запрос шарит его по моему не возможно сделать так что б он выводил готовую нужную мне таблицу, здесь всё дело в ASP, нужно построить там таблицу ну вот как?? Облазил несколько форумов ничего подобного не видел, поднял пару FAQов тож ничё интересного, ладно будем думать???
Сенкс ещё раз. |
|
| В начало |
|
 |
 Guffi
Энтузиаст

Возраст: 36
Знак зодиака: 
Зарегистрирован: 06.08.2004
Сообщения: 250
Откуда: Лангепас
|
|
|
Цитата |
|
используй 3 набора rs1, rs2, rs3 с запросами вида
| SQL: | SELECT name FROM bolnie WHERE diagnoz = 1
|
| SQL: | SELECT name FROM bolnie WHERE diagnoz = 2
|
| SQL: | SELECT name FROM bolnie WHERE diagnoz = 3
|
| HTML: | <%dim i i=1 do while (not rs1.EOF) or (not rs2.EOF) or (not rs3.EOF)%> <td><%if not rs1.EOF then%><%=rs1("name") rs1.movenext end if%></td> <td><%if not rs2.EOF then%><%=rs2("name") rs2.movenext end if%></td> <td><%if not rs3.EOF then%><%=rs3("name") rs3.movenext end if%></td> </tr> <% i=i+1 loop %>
|
По крайней мере избавишься от пустых ячеек, цикл правда через ... сам додумаешь... _________________ Не сами по себе мы хороши, а фону из говна благодаря |
|
| В начало |
|
 |
|
|
|
Цитата |
|
[quote][quote="Guffi"]используй 3 набора rs1, rs2, rs3 с запросами вида
да вот в том то всё и дело сколько наборов не используй а вся проблема в цикле, можно за одну выборку параметры задать (что б не грузилось) но цикл если поставить один то он смотрит по первой колонке, и дальше лесенкой, если задать цикл для каждой колонки то во первых это уже не таблица а во вторых нужно учитывать что кол-во записей в колонках не всегда одинаково, вообщето всегда разно.
Сенкс большое Guffi
за мысль, но я пробовал уже типа такого, но как видиш и у тебя значение i фактически одно на все столбцы, вот здесь и проблема то т.к. писал выше кол-во записей в столбцах всегда не одинаково и меняется, а если вместо цикла задать жёсткое значение то в таблице будут либо последние ячейки пусты либо не все ФИО будут отбражатся, надо учитывать что они меняются ВОТ В ЧЁМ ПРОБЛЕМА ЭТОЙ ТЕМЫ в построении таблицы в HTML!! |
|
| В начало |
|
 |
 Guffi
Энтузиаст

Возраст: 36
Знак зодиака: 
Зарегистрирован: 06.08.2004
Сообщения: 250
Откуда: Лангепас
|
|
|
Цитата |
|
| Цитата: | | видиш и у тебя значение i фактически одно на все столбцы |
мне показалось что эт у тебя порядковый номер и соответственно должно быть одно при этом равное в конце цикла большему значению больных в группе.
| Цитата: | | ВОТ В ЧЁМ ПРОБЛЕМА ЭТОЙ ТЕМЫ в построении таблицы в HTML!! |
теперь поподробнее... как должна выглядеть таблица при 15-ти сердечниках и 8 язвениках? _________________ Не сами по себе мы хороши, а фону из говна благодаря |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Sorry, sorry, sorry всем, особенно Хантер и Guffi,
правильно говорят век живи век учись, пока посидиш над этим кодом уже явную ошибку не замечаеш
(замыленный глаз).
Хантер тебе первому огромное спасибо:
| Цитата: | У тебя тег <TR> ставится один раз до цикла, а тег </TR> ставится в каждом проходе цикла. Это грубая ошибка.
Заметил спасибо, хотя не знаеш ASP это похоже с HTML
Guffi тебе тоже отдельное спасибо:
| <%dim i
i=1
do while (not rs1.EOF) or (not rs2.EOF) or (not rs3.EOF)%>
<tr>
<td><%=i%></td>
<td><%if not rs1.EOF then%><%=rs1("name") rs1.movenext end if%></td>
<td><%if not rs2.EOF then%><%=rs2("name") rs2.movenext end if%></td>
<td><%if not rs3.EOF then%><%=rs3("name") rs3.movenext end if%></td>
</tr>
<% i=i+1
loop %>
заметил тег прохода цикла, ну и учитывать что диагнозов то всего 11 не хилая таблица то получается.
Да Guffi там небольшая доработка реальный код такой:
<td><%if not rs1.EOF then%><%=rs1("name")%><% rs1.movenext%><% end if%></td>
всё равно спасибо.
Спасибо всем кто принял участие в обсуждении, результат ошибка в теге.
Тема закрыта. |
|
| В начало |
|
 |
|
Новая тема
Ответить
Печать
|
Вы можете начинать темы Вы можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете присоединять файлы в этом форуме Вы можете скачивать файлы в этом форуме
|
|