Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Неправильный вывод, помогите.


Автор: jzZ 3.8.2006, 19:45
См. тему. Под логикой имел ввиду неправильную связь запроса с выводом.
А вот мой запрос к бд
Код

$query = "SELECT check_ID.ID, application_n1.Date_PAY, application_n1.Adressee, application_n3.P_P,
application_n3.P_P_From, application_n2.Code_Division FROM application_n1, application_n3, application_n2, check_ID";

А это мой нубский вывод данных:
Код

    while($row = mysql_fetch_array($result)) {
 ?>     <tr>
      <td width="29" height="19" class="shit"><div align="center"><?echo($row["ID"]);?></div></td>
      <td class="shit" width="84" height="19"><div align="center"><?echo($row["Date_PAY"]);?></div></td>
      <td class="shit" width="116" height="19"><div align="center"><?echo($row["Adressee"]);?></div></td>
      <td class="shit" width="52" height="19"><div align="center"><?echo($row["P_P"]);?></div></td>
      <td class="shit" width="84" height="19"><div align="center"><?echo($row["P_P_From"]);?></div></td>
      <td class="shit" width="133" height="19"><div align="center"><?echo($row["Code_Division"]);?></div></td>
      <td class="shit" width="47" height="19"><div align="center">ñòàòóñ</div></td>
      <td class="shit" width="84" height="19"><div align="center">ïðèìå÷àíèå</div></td>
      <td class="shit" width="47" height="19"><div align="center">action</div></td>
      </tr>
<?}


Я ввел в каждую таблицу по три записи, чтобы проверить, в ответ получаю огромную кучу строк в таблицах, т.е. вместо трех требуемых <tr></tr>, получил 162 строки ) т.е. каждый id выводил повторяющиеся данные 54 раза (т.е. 54 <tr></tr>)
Не могу понять в чем проблема, заранее благодарен.

Автор: jzZ 3.8.2006, 20:10
:::удалил:::глупость:::

Автор: GiV 3.8.2006, 22:25
У Вас произведение таблиц, а не соединение или объединение.

Приведите структуру таблиц (можно с частичным наполнением) и тогда уже можно будет составить правильный запрос.

Автор: jzZ 3.8.2006, 22:37
Да структура тупая, я в БД ничего не соображаю... Но если это как то поможет.
user posted image

Автор: skyboy 3.8.2006, 23:01
обалдеть. и как можно определить, какие данные требуется получить запросом? 

Автор: jzZ 3.8.2006, 23:35
skyboy
Ты невнимательно посмотрел 1 пост, там в запросе все видно и в хтмл коде к-рый на вывод.

Добавлено @ 23:36 
Никаких связей в бд нет...

Добавлено @ 23:49 
На всякий случай еще раз данные что мне нужны
check_ID.ID
application_n1.Date_PAY
application_n1.Adressee
application_n3.P_P
application_n3.P_P_From
application_n2.Code_Division

Автор: skyboy 4.8.2006, 08:10
Цитата(jzZ @  3.8.2006,  23:35 Найти цитируемый пост)
Ты невнимательно посмотрел 1 пост, там в запросе все видно и в хтмл коде к-рый на вывод.

Если бы тот запрос действительно соответствовал бы тому, что ты отел получить, ты бы и получил желаемое. А определеять по некорректному запросу то, что человек ожидал - гиблое дело. Кроме перечисления полей укажи, как связывать таблицы. Что чему равно и т.д..

Автор: jzZ 4.8.2006, 11:49
Цитата

Добавлено @ 23:36 
Никаких связей в бд нет...

От этого запроса хочу получить только значения этих полей чтобы потом вывести их в цикле. Ничего ничему не равно! Только значения

Автор: skyboy 4.8.2006, 12:00
тогда отдельно получай данные из каждой таблицы.

Добавлено @ 12:10 
если у тебя в таблице А два числа 1 и 2, а в таблице В - две буквы: "А" и "Б", то 
Код

SELECT A.some,B.some FROM A,B

Выдаст тебе не
1 А
2 Б
а все возможные комбинации:
1 А
1 Б
2 А 
2 Б
Это называется декартовым произведением. Потому, если тебе надо только по одному значению, но таблицы между собой никак не связаны(что странно - зачем тогда один запрос использовать для выдачи никак не связанной между собой информации?!), то выбирай отдельными запросами. 

Автор: jzZ 4.8.2006, 12:21
Цитата

тогда отдельно получай данные из каждой таблицы.

А можно как то в один запрос запихнуть?

Автор: skyboy 4.8.2006, 14:03
на моём примере с буквами и цифрами покажи, что ты ожидаешь получить:
1 А
2 В
или
1 В
2 А
и поясни, как сделать, чтоб выбор был очевиден. 
Ответ: нет. При такой постановке вопроса(абсолютно несвязанные данные из разных таблиц, скомпонованные в одну строку) получить результат невозможно.

Автор: jzZ 4.8.2006, 16:03
Цитата

Ответ: нет. При такой постановке вопроса(абсолютно несвязанные данные из разных таблиц, скомпонованные в одну строку) получить результат невозможно.

Это мне и нужно было, спасибо за помощь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)