Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Сегодня :

День славянской письменности и культуры


запрос SQL из HTML


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
Alex_a
Гость







СообщениеЧт, 07-Фев-2008 13:17    Заголовок сообщения: запрос 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
Откуда: Холмск
СообщениеПт, 08-Фев-2008 1:48 
Цитата

Сначала выводишь первый столбец, затем второй, ну а после третий. Что здесь непонятного?
_________________
Bonum initium est dimidium facti
SQL-задачи (on-line)
В начало
Посмотреть профиль Отправить личное сообщение
Alex_a
Гость







СообщениеПт, 08-Фев-2008 8:56 
Цитата

dogma писал(а):
Сначала выводишь первый столбец, затем второй, ну а после третий. Что здесь непонятного?


Не очень понял, в смысле столбец в SQL или в HTML это две разные вещи, а каким образом написать в коде???
Подскажите плиз в коде неделю бьюсь, вообще то первый раз с таким столкнулся.

Заранее спасибо.
В начало
Пол:Муж Guffi
Энтузиаст


Возраст: 36
Знак зодиака: Близнецы
Зарегистрирован: 06.08.2004
Сообщения: 250
Откуда: Лангепас
СообщениеПн, 11-Фев-2008 7:19 
Цитата

Цитата:
Не очень понял, в смысле столбец в SQL или в HTML это две разные вещи, а каким образом написать в коде???

Приведи свой код, на нем тебе можно будет показать что не так...

_________________
Не сами по себе мы хороши, а фону из говна благодаря
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alex_a
Гость







СообщениеПн, 11-Фев-2008 9:47 
Цитата

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
Откуда: Донецк
СообщениеПн, 11-Фев-2008 11:47 
Цитата

Напиши лучше здесь, что у тебя получилось - и посмотрим, где у тебя ошибка
_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
Хантер
Гость







СообщениеПн, 11-Фев-2008 13:47 
Цитата

Цитата:
Уже использовал как group by так и order by но это только упорядочивает строки, а таблица так и остаётся лесенкой.
Помогите кто знает, может это из-за кода HTML а может в SQL что то не так делаю.


Отлаживай программу поэтапно. Смотри сперва результат SQL-запроса. Если в нем порядок, значит проблема в построении HTML таблицы. У тебя явно непорядок с голов.. пардон, с HTML. Если что-то непонятно, перечитывай мануалы, экспериментируй. Если трудно представить процесс в голове, нарисуй его на бумаге. Поищи в интернете готовые решения.

Цитата:
Помогите, а то шеф голову рвёт, блин одним програмистом меньше будет.

Задумчиво Может, оно и к лучшему..
В начало
Alex_a
Гость







СообщениеПн, 11-Фев-2008 14:17 
Цитата

Хантер писал(а):
Цитата:
Уже использовал как group by так и order by но это только упорядочивает строки, а таблица так и остаётся лесенкой.
Помогите кто знает, может это из-за кода HTML а может в SQL что то не так делаю.


Отлаживай программу поэтапно. Смотри сперва результат SQL-запроса. Если в нем порядок, значит проблема в построении HTML таблицы. У тебя явно непорядок с голов.. пардон, с HTML. Если что-то непонятно, перечитывай мануалы, экспериментируй. Если трудно представить процесс в голове, нарисуй его на бумаге. Поищи в интернете готовые решения.

Цитата:
Помогите, а то шеф голову рвёт, блин одним програмистом меньше будет.

Задумчиво Может, оно и к лучшему..



Вот именно чтот в HTML я не могу её никак построить, весь запрос отлажен всё ОК (проверял на QA) думаю всё дело в том когда я пишу условие If=1 (заключение по болезни 1) он выбирает первое условие, а затем пишу If=2 вот здесь то и проблема он мне в HTML таблицу выдаёт лесенкой, т.е. заканчивается первая колонка начинается соседняя вторая, но только после окончания первой колонки, а как сделать чтоб колонки начинались все с одного уровня т.е. с первой строки (см. выше привожу полностью в коде HTML страницу) ???????
В начало
Alex_a
Гость







СообщениеПн, 11-Фев-2008 14:49 
Цитата

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>
\\\\\\\\\\\\\\\\\\\\

Вот такой вот файлик не хилый.
Заранее спасибо.
В начало
Хантер
Гость







СообщениеПн, 11-Фев-2008 16:49 
Цитата

Блин, если посмотреть на результирующий HTML-код, то все сразу станет ясно.

У тебя тег <TR> ставится один раз до цикла, а тег </TR> ставится в каждом проходе цикла. Это грубая ошибка.

Далее, строки результата у тебя в виде тиаблицы "имя - диагноз". При каждом проходе в HTML таблицу добавляется новая строка с двумя пустыми колонками и одной непустой. Это неоптимальное решение, будет много пустых ячеек в таблице.

Тебе нужно либо перестроить запрос так, чтобы он тебе давал готовую таблицу в нужном виде (чтобы ее потом перегнать в HTML), либо результат запроса сгруппировать по колонкам и вывести по строкам. Поскольку я не знаю ASP, подробностей не расскажу.
В начало
Alex_a
Гость







СообщениеВт, 12-Фев-2008 6:07 
Цитата

Хантер сенкс большое,

запрос шарит его по моему не возможно сделать так что б он выводил готовую нужную мне таблицу, здесь всё дело в ASP, нужно построить там таблицу ну вот как?? Облазил несколько форумов ничего подобного не видел, поднял пару FAQов тож ничё интересного, ладно будем думать???

Сенкс ещё раз.
В начало
Пол:Муж Guffi
Энтузиаст


Возраст: 36
Знак зодиака: Близнецы
Зарегистрирован: 06.08.2004
Сообщения: 250
Откуда: Лангепас
СообщениеВт, 12-Фев-2008 7:56 
Цитата

используй 3 набора rs1, rs2, rs3 с запросами вида
SQL:
  1.  
  2. SELECT name
  3. FROM bolnie
  4. WHERE diagnoz = 1
  5.  

SQL:
  1.  
  2. SELECT name
  3. FROM bolnie
  4. WHERE diagnoz = 2
  5.  

SQL:
  1.  
  2. SELECT name
  3. FROM bolnie
  4. WHERE diagnoz = 3
  5.  


HTML:
  1.  
  2. <%dim i
  3.       i=1
  4.       do while (not rs1.EOF) or (not rs2.EOF) or (not rs3.EOF)%>
  5.  
  6.   <tr>
  7.     <td><%=i%></td>
  8.     <td><%if not rs1.EOF then%><%=rs1("name") rs1.movenext end if%></td>
  9.     <td><%if not rs2.EOF then%><%=rs2("name") rs2.movenext end if%></td>
  10.     <td><%if not rs3.EOF then%><%=rs3("name") rs3.movenext end if%></td>
  11.   </tr>
  12. <% i=i+1
  13.      loop %>
  14.  

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

_________________
Не сами по себе мы хороши, а фону из говна благодаря
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alex_a
Гость







СообщениеВт, 12-Фев-2008 13:20 
Цитата

[quote][quote="Guffi"]используй 3 набора rs1, rs2, rs3 с запросами вида


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

Сенкс большое Guffi
за мысль, но я пробовал уже типа такого, но как видиш и у тебя значение i фактически одно на все столбцы, вот здесь и проблема то т.к. писал выше кол-во записей в столбцах всегда не одинаково и меняется, а если вместо цикла задать жёсткое значение то в таблице будут либо последние ячейки пусты либо не все ФИО будут отбражатся, надо учитывать что они меняются ВОТ В ЧЁМ ПРОБЛЕМА ЭТОЙ ТЕМЫ в построении таблицы в HTML!!
В начало
Пол:Муж Guffi
Энтузиаст


Возраст: 36
Знак зодиака: Близнецы
Зарегистрирован: 06.08.2004
Сообщения: 250
Откуда: Лангепас
СообщениеВт, 12-Фев-2008 13:46 
Цитата

Цитата:
видиш и у тебя значение i фактически одно на все столбцы

мне показалось что эт у тебя порядковый номер и соответственно должно быть одно при этом равное в конце цикла большему значению больных в группе.
Цитата:
ВОТ В ЧЁМ ПРОБЛЕМА ЭТОЙ ТЕМЫ в построении таблицы в HTML!!

теперь поподробнее... как должна выглядеть таблица при 15-ти сердечниках и 8 язвениках?

_________________
Не сами по себе мы хороши, а фону из говна благодаря
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alex_a
Гость







СообщениеВт, 12-Фев-2008 15:10 
Цитата

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>
всё равно спасибо.


Спасибо всем кто принял участие в обсуждении, результат ошибка в теге.

Тема закрыта.
В начало
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100