![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| NOOB |
|
|||
|
Unregistered |
Как будет происходить сортировка если данные взяты из 3 таблиц
Например вот 2 массива: $o=mysql_query("select tovar.creater, model, marka, year_exit, color, opn, reyting from tovar1, cell where tovar.id = cell.tovar"); $e=mysql_query("select prod.name from prod, cell where cell.prod = prod.id"); Оба массива надо отсортировать по creater'у заранее спасиб |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
а почему бы в запросе не отсортировать?
|
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: 2 Всего: 42 |
Во втором запросе вообще нет creater'a.
|
|||
|
||||
| NOOB |
|
|||
|
Unregistered |
а как сразу в запросе отсортировать если идет сравнение where tovar.id = cell.tovar по которому он будет выводить данные, или если можно сразу в запросе то как???
|
|||
|
||||
| NOOB |
|
|||
|
Unregistered |
все выглядит так:
echo "<table border=1 width=100% bgcolor=gold>"; echo "<tr><td>Производитель</td><td>Модель</td><td>Марка</td>"; echo "<td>Год выпуска</td><td>Цвет</td><td>Опции</td>"; echo "<td>Рейтинг</td><td>Продавец</td><td>Цена</td><td>Наличие</td></tr>"; $p=mysql_query("select cell.price1, nal from tovar1, cell where cell.tovar = tovar1.id"); $o=mysql_query("select tovar1.creater, model, marka, year_exit, color, opn, reyting from tovar1, cell where tovar1.id = cell.tovar"); $e=mysql_query("select prod.name from prod, cell where cell.prod = prod.id"); for ($i=0; $i<mysql_num_rows($o); $i++) { echo "<tr>"; $g=mysql_fetch_array($e); $d=mysql_fetch_array($p); $v=mysql_fetch_array($o); echo "<td>$v[creater]</td><td>$v[model]</td><td>$v[marka]</td>"; echo "<td>$v[year_exit]</td><td>$v[color]</td>"; echo "<td>$v[opn]</td><td>$v[reyting]</td><td>$g[name]</td><td>$d[price1]<td><td>$d[nal]</td>"; echo "</tr>"; } просто надо чтоб при сортировке сдвигались целые строки |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
|
|||
|
||||
| NOOB |
|
|||
|
Unregistered |
а если надо сортировать не 1 таблицу а массив то как это будет выглядеть??
|
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
а что вы под этим понимаете?
Мне кажится вам нужно просто грамотно составить запрос, а не сортировать массивы. |
|||
|
||||
| NOOB |
|
|||
|
Unregistered |
Надо отсортировать получившуюся таблицу в ходе предыдуших действий.
Но получившаяся таблица в свою очередь состоит из 3 таблиц Tovar, Cell, Prod. Сортировать нужно по creater. Если допустим мы отсортируем таблицу Tovar то как мне кажется остальные таблицы это не изменит. Может я чето не так понимаю.... |
|||
|
||||
| Secandr |
|
||||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
правильно. Но если эти таблицы зависят друг от друга, то лучше получать их в одном запросе, а не трёх разных и сортировать их там же в запросе.
B вообще чем принципиально отличаются:
Это всё точно можно было в одном запросе получить. |
||||
|
|||||
| NOOB |
|
|||
|
Unregistered |
Да но ведь есть еще:
$e=mysql_query("select prod.name from prod, cell where cell.prod = prod.id"); он ведь не будет участвовать в сортировке. |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
а каким образом этот запрос привязан к двум предыдущим?
|
|||
|
||||
| NOOB |
|
|||
|
Unregistered |
на экран выводится таблица сост. из 3 таблиц:cell, prod, tovar;
В начале идут данные из tovar, затем из prod, а в конце из cell. Я выложил все чуть выше. А запрос этот привязан: select prod.name from prod, cell where cell.prod = prod.id |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
так сведи их все вместе в один запрос и не мучайся.
|
|||
|
||||
| NOOB |
|
|||
|
Unregistered |
Ну яб не мучался тока я пока не догнал как их в 1 запрос свести, были некоторые попытки но они не увенчались успехом. Кстати как сразу провести сортировку в запросе(через and)? Заранее спасиб.
|
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
не понял вопроса, как это сортировка через and ?
Сортировку делают так:
посоветовать как составить запрос не могу, тяжало представить структуру таблицы. Если уж так всё сложно используй пхп функцию array_multisort |
|||
|
||||
| NOOB |
|
|||
|
Unregistered |
Посмотри может что-то ясней станет;
Обший вид: +---------+------+-----+----------+----+-----+-------+-----+-----+----+ |Производ.|Модель|Марка|Год ыпуска|Цвет|Опции|Рейтинг|Прод.|Цена1|Нал.| +---------+------+-----+----------+----+-----+-------+-----+-----+----+ |bmw | |525i |2000 |red |пэп |50% |Петя |1500$|1 | |mers | |660sl|1999 |blue|пэп |55% |Коля |1000$|2 | |opel |omega | |1998 |red |пэп |30% |Вася |2000$|1 | Товар: +-+---------+------+-----+----------+----+-----+-------+ |id|Производ.|Модель|Марка|Год ыпуска|Цвет|Опции|Рейтинг| +-+---------+------+-----+----------+----+-----+-------+ |1 |mers | |660sl|1999 |blue|-\-\-|-\-\-\-| |2 |bmw |-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\| |3 |opel |-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\| Прод: +--+---------+ |id |Имя |-\-\-|-\-\-\|-\-\-\|-\-\-\|-\-\-| +--+---------+ |1 |Коля | |2 |Вася | |3 |Петя | Cell: +--+-----+----+------+---+ |id |tovar|prod|price1|nal| +--+-----+----+------+---+ |1 |2 |3 |1500$ |1 | |2 |1 |1 |1000$ |2 | |3 |3 |2 |2000$ |1 | Начнем сначала; как это все отсортировать. Заранее Спасиб..... |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
что с чем связано и как?
|
|||
|
||||
| NOOB |
|
|||
|
Unregistered |
разве я на 1 странице не расписал???
{ echo $head; echo $cp; echo $body; echo "<h2>$error</h2>"; echo "</body></html>"; exit; } mysql_select_db($db_name); echo "<table border=1 width=100% bgcolor=gold>"; echo "<tr><td>Производитель</td><td>Модель</td><td>Марка</td>"; echo "<td>Год выпуска</td><td>Цвет</td><td>Опции</td>"; echo "<td>Рейтинг</td><td>Продавец</td><td>Цена</td><td>Наличие</td></tr>"; $o=mysql_query("select tovar1.creater, tovar1.model, tovar1.marka, tovar1.year_exit, tovar1.color, tovar1.opn, tovar1.reyting from tovar1 order by tovar1.creater"); $e=mysql_query("select prod.name from prod, cell where cell.prod = prod.id"); for ($i=0; $i<mysql_num_rows($e); $i++) { echo "<tr>"; $g=mysql_fetch_array($e); $v=mysql_fetch_array($o); echo "<td>$v[creater]</td><td>$v[model]</td><td>$v[marka]</td>"; echo "<td>$v[year_exit]</td><td>$v[color]</td>"; echo "<td>$v[opn]</td><td>$v[reyting]</td><td>$g[name]</td><td>$v[price1]</td><td>$v[nal]</td>"; echo "</tr>"; } echo "</table></body></html>" ?> |
|||
|
||||
| NOOB |
|
|||
|
Unregistered |
Обший вид:
+---------+------+-----+----------+----+-----+-------+-----+-----+----+ |Производ.|Модель|Марка|Год ыпуска|Цвет|Опции|Рейтинг|Прод.|Цена1|Нал.| +---------+------+-----+----------+----+-----+-------+-----+-----+----+ |bmw | |525i |2000 |red |пэп |50% |Петя |1500$|1 | |mers | |660sl|1999 |blue|пэп |55% |Коля |1000$|2 | |opel |omega | |1998 |red |пэп |30% |Вася |2000$|1 | До Прод. все идет с Товара; Прод с Продавца(name); Цена1,Нал c Cell(price1, nal) |
|||
|
||||
| NOOB |
|
|||
|
Unregistered |
че нет не у кого идей????
|
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
так и состовляй один запрос:
у тебя: Cell.tovar = Товар.id and Cell.prod=Товар.id и не нужно страшных сортировок! |
|||
|
||||
| No_Mad |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 19.7.2004 Репутация: нет Всего: нет |
так мне сами данные нужно отсортировать (напривмер: Производителя в алфав порядке)
|
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
если ты все запросы сведёшь к одному, то добавив в конце запроса ORDER BY таблица.поле отсортируешь по нужному параметру.
|
|||
|
||||
| No_Mad |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 19.7.2004 Репутация: нет Всего: нет |
Спасибо огромное!!!Яб еще долго парился с этим...
|
|||
|
||||
| No_Mad |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 19.7.2004 Репутация: нет Всего: нет |
Всплыл еще 1 вопрос. Если Столбец "время жизни сообшения" будет меньше текушей даты или столбец наличие = 0, как сделать чтоб он невыводил строку...
Это сообщение отредактировал(а) No_Mad - 21.7.2004, 08:45 |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
в WHERE добавь условие "and наличие>0 and время жизни>NOW()"
Мне кажется тебе нужно идти в ветку БД и читать топик пегаса о базах данных. |
|||
|
||||
| No_Mad |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 19.7.2004 Репутация: нет Всего: нет |
спасиб
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |