Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
ref_flix
3 / 3 / 0
Регистрация: 16.12.2015
Сообщений: 61
1

Три запроса с одной таблицы

05.04.2016, 12:15. Просмотров 207. Ответов 3
Метки нет (Все метки)

Нужно осуществить три запроса с одной таблицы, в таблицы товар с тремя значениями: премиум, стандарт и эконом, надо что бы на одной странице выводились в разных блоках этот товар. Подскажите пожалуйста как можно реализовать. Вот пытался сам написать, написал два отдельных запроса но на втором выдаёт ошибку.
Перед запросами это обработка данных с фильтра.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
        <?php
            if ($_GET["country"] ) {
                foreach($_GET['country'] as $key => $val)
                    $_GET['country'][$key] = '"' . $val . '"';
                    
                $check_country = implode(',',$_GET["country"]);
            }
            if ($_GET["manufacturer"] ) {
                foreach($_GET['manufacturer'] as $key => $val)
                    $_GET['manufacturer'][$key] = '"' . $val . '"';
                    
                $check_manufacturer = implode(',',$_GET["manufacturer"]);
            }
            if ($_GET["brand"] ) {
                foreach($_GET['brand'] as $key => $val)
                    $_GET['brand'][$key] = '"' . $val . '"';
                    
                $check_brand = implode(',',$_GET["brand"]);
            }
            if ($_GET["capacity"] ) {
                foreach($_GET['capacity'] as $key => $val)
                    $_GET['capacity'][$key] = '"' . $val . '"';
                    
                $check_capacity = implode(',',$_GET["capacity"]);
            }
            if ($_GET["current"] ) {
                foreach($_GET['current'] as $key => $val)
                    $_GET['current'][$key] = '"' . $val . '"';
                    
                $check_current = implode(',',$_GET["current"]);
            }
            if ($_GET["dimensions"] ) {
                foreach($_GET['dimensions'] as $key => $val)
                    $_GET['dimensions'][$key] = '"' . $val . '"';
                    
                $check_dimensions = implode(',',$_GET["dimensions"]);
            }
                        if ($_GET["tiprazmer"] ) {
                foreach($_GET['tiprazmer'] as $key => $val)
                    $_GET['tiprazmer'][$key] = '"' . $val . '"';
                    
                $check_tiprazmer = implode(',',$_GET["tiprazmer"]);
            }
            if (!empty($check_country) OR !empty($check_manufacturer) OR !empty($check_brand) OR !empty($check_capacity) OR !empty($check_current) OR !empty($check_dimensions) OR !empty($check_tiprazmer) ) {
                if (!empty($check_country)) $query_country = " AND country_id IN ($check_country)";
                if (!empty($check_manufacturer)) $query_manufacturer = " AND manufacturer_id IN ($check_manufacturer)";
                if (!empty($check_brand)) $query_brand = " AND brand_id IN ($check_brand)";
                if (!empty($check_capacity)) $query_capacity = " AND capacity_id IN ($check_capacity)";
                if (!empty($check_current)) $query_current = " AND current_id IN ($check_current)";
                if (!empty($check_dimensions)) $query_dimensions = " AND dimensions_id IN ($check_dimensions)";
                if (!empty($check_tiprazmer)) $query_tiprazmer = " AND tiprazmer_id IN ($check_tiprazmer)";
            };
            $result = mysql_query("SELECT * FROM `battery` WHERE premium = 1 $query_country $query_manufacturer $query_brand $query_capacity $query_current $query_dimensions $query_tiprazmer",$link);
            if (mysql_num_rows($result) > 0){
                        $row = mysql_fetch_array($result);
                        do{
                            echo '
                        <table border="0" class="c-s-tab-w">
                            <tr>
                                <td width="20%">'.$row["brand"].'</td>
                                <td width="10%">'.$row["capacity"].'</td>
                                <td width="10%">'.$row["capacity"].'</td>
                                <td width="20%">'.$row["capacity"].'</td>
                                <td width="20%">'.$row["capacity"].'</td>
                                <td width="20%">'.$row["dimensions"].'</td>
                            </tr>
                        </table>    
                    ';
                }
                    while ($row = mysql_fetch_array($result));
                }
            ?>
        </div>
        <div id="class-akb"><span>Премиум</span>: Forse, Westa, Vegale</div>
        <div id="battery">
        <?php
            if ($_GET["country"] ) {
                foreach($_GET['country'] as $key => $val)
                    $_GET['country'][$key] = '"' . $val . '"';
                    
                $check_country = implode(',',$_GET["country"]);
            }
            if ($_GET["manufacturer"] ) {
                foreach($_GET['manufacturer'] as $key => $val)
                    $_GET['manufacturer'][$key] = '"' . $val . '"';
                    
                $check_manufacturer = implode(',',$_GET["manufacturer"]);
            }
            if ($_GET["brand"] ) {
                foreach($_GET['brand'] as $key => $val)
                    $_GET['brand'][$key] = '"' . $val . '"';
                    
                $check_brand = implode(',',$_GET["brand"]);
            }
            if ($_GET["capacity"] ) {
                foreach($_GET['capacity'] as $key => $val)
                    $_GET['capacity'][$key] = '"' . $val . '"';
                    
                $check_capacity = implode(',',$_GET["capacity"]);
            }
            if ($_GET["current"] ) {
                foreach($_GET['current'] as $key => $val)
                    $_GET['current'][$key] = '"' . $val . '"';
                    
                $check_current = implode(',',$_GET["current"]);
            }
            if ($_GET["dimensions"] ) {
                foreach($_GET['dimensions'] as $key => $val)
                    $_GET['dimensions'][$key] = '"' . $val . '"';
                    
                $check_dimensions = implode(',',$_GET["dimensions"]);
            }
                        if ($_GET["tiprazmer"] ) {
                foreach($_GET['tiprazmer'] as $key => $val)
                    $_GET['tiprazmer'][$key] = '"' . $val . '"';
                    
                $check_tiprazmer = implode(',',$_GET["tiprazmer"]);
            }
            if (!empty($check_country) OR !empty($check_manufacturer) OR !empty($check_brand) OR !empty($check_capacity) OR !empty($check_current) OR !empty($check_dimensions) OR !empty($check_tiprazmer) ) {
                if (!empty($check_country)) $query_country = " AND country_id IN ($check_country)";
                if (!empty($check_manufacturer)) $query_manufacturer = " AND manufacturer_id IN ($check_manufacturer)";
                if (!empty($check_brand)) $query_brand = " AND brand_id IN ($check_brand)";
                if (!empty($check_capacity)) $query_capacity = " AND capacity_id IN ($check_capacity)";
                if (!empty($check_current)) $query_current = " AND current_id IN ($check_current)";
                if (!empty($check_dimensions)) $query_dimensions = " AND dimensions_id IN ($check_dimensions)";
                if (!empty($check_tiprazmer)) $query_tiprazmer = " AND tiprazmer_id IN ($check_tiprazmer)";
            };
            $row = mysql_query("SELECT * FROM `battery` WHERE standard = 1 $query_country $query_manufacturer $query_brand $query_capacity $query_current $query_dimensions $query_tiprazmer",$link);
            if (mysql_num_rows($row) > 0){
                        $row = mysql_fetch_array($result);
                        do{
                            echo '
                        <table border="0" class="c-s-tab-w">
                            <tr>
                                <td width="20%">'.$row["brand"].'</td>
                                <td width="10%">'.$row["capacity"].'</td>
                                <td width="10%">'.$row["capacity"].'</td>
                                <td width="20%">'.$row["capacity"].'</td>
                                <td width="20%">'.$row["capacity"].'</td>
                                <td width="20%">'.$row["dimensions"].'</td>
                            </tr>
                        </table>    
                    ';
                }
                    while ($row = mysql_fetch_array($row));
                }
            ?>
Добавлено через 12 часов 15 минут
...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2016, 12:15
Ответы с готовыми решениями:

Вытаскиваем необходимые данные из одной таблицы и вписываем в другую на одной странице
Всем привет ..... сразу к делу &lt;?php $res = mysql_query(&quot;SELECT id FROM `album`...

Объединить три SQL запроса в 1 массив
Сабж, есть вот такие 3 запроса: $q1=mysql_query(&quot;SELECT id,price,group_id,name,description FROM...

Три запроса в одном в базу mysql
Здравствуйте, есть три таблицы в базе: users, regals, user_info. Из таблицы users нужно выбрать...

Два запроса к одной таблице
Здравствуйте.Есть запрос к трём таблицам одной базы mysql.Вот часть $sql = &quot;SELECT m.*,...

Отправка 2 mysql запроса в одной переменной
Никак не могу понять в чем косяк: $query = &quot;UPDATE `ikkay_users` SET `user_log_cookie` =...

3
maruo
132 / 132 / 48
Регистрация: 26.04.2013
Сообщений: 1,355
05.04.2016, 12:55 2
ref_flix, Очень мало информации , структуру таблицы хотя бы, и что за ошибка?

Добавлено через 1 минуту
И если я правильно понимаю вы вытаскиваете одинаковое количество столбцов? во всех 3х запросах?

Если это так то используйте UNION
0
ref_flix
3 / 3 / 0
Регистрация: 16.12.2015
Сообщений: 61
05.04.2016, 13:36  [ТС] 3
Цитата Сообщение от maruo Посмотреть сообщение
И если я правильно понимаю вы вытаскиваете одинаковое количество столбцов? во всех 3х запросах?
Да. Выбор с таблице идет по одинаковым значением только лишь одно отличее в одном запросе надо вытащить где premium = 1, во втором standard = 1, а остальные данные одинаковые

Ошибка была mysql_num_rows(): supplied is not a valid MySQL result resource, ругалось на вот эту сроку
PHP
1
if (mysql_num_rows($row) > 0){
во втором запросе
0
maruo
132 / 132 / 48
Регистрация: 26.04.2013
Сообщений: 1,355
05.04.2016, 13:55 4
ref_flix, Ну используйте объединенные запросы через юнион
SQL
1
2
3
4
5
 SELECT bla bla bla
UNION
SELECT bla bla bla 
UNION 
SELECT bla bla bla
ВО общем почитайте лучше сначала
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2016, 13:55

Обратотка одной строки запроса PHP PDO
Есть запрос, который возвращает одну строчку из базы. $sql = 'SELECT user_id, password FROM...

Сложный запрос фигурируют три таблицы
Решил сделать поиск по сайту (по тегам) в котором фигурируют три таблицы. Первая таблицы картинок...

Генерация таблицы html на основе запроса из базы данных
Дан вот такой массив: Array ( =&gt; Array ( =&gt; Первый ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru