|
|
|
| помогите пожалуйста создать запрос.
передается переменная по гету - $product_id
есть три таблици
1.
product_option из нее надо выбрать значения option_id по связке product_id = $product_id
2.
option из нее надо выбрать значения option_id по связке option_id = $option_id (из product_option) и type = image
3.
option_description из нее выбираем name по отсеянной связке option_id = $option_id (из option)
реально ли вывести одним запросом ? пробовал вывести несколькими запросами больно нагромождения получается. | |
|
|
|
|
|
|
|
для: kolobok16
(03.03.2016 в 23:05)
| | Типа того
SELECT
`product_option`.`option_id` AS `option_id_prod`,
`option`.`option_id` AS `option_id_opt`,
`option_description`.`name` AS `name`
FROM `product_option`
JOIN `option` ON `option`.`option_id`=`product_option`.`option_id` AND `option`.`type`='image'
JOIN `option_description` ON `option_description`.`option_id`=`option`.`option_id`
WHERE `product_option`.`product_id`='тут ваша переменная'
|
Не совсем правда понятно зачем вам выводить 2 штуки | |
|
|
|
|
|
|
|
для: KPETuH
(04.03.2016 в 10:39)
| | выдает ошибку
Ошибка выполнения запроса - Table 'test.product_option' doesn't exist
SELECT `product_option`.`option_id` AS `option_id_prod`, `option`.`option_id` AS `option_id_opt`, `option_description`.`name` AS `name` FROM `product_option` JOIN `option` ON `option`.`option_id`=`product_option`.`option_id` AND `option`.`type`='image' JOIN `option_description` ON `option_description`.`option_id`=`option`.`option_id` WHERE `product_option`.`product_id`='65'
|
option_id 2 раза выводим вот почему
таблица product_option
product_id option_id
65 13
65 14
65 16
65 18
66 15
и т.д.
выбираем то что соответствует номеру продукта
таблица option
option_id type
13 image
14 select
16 select
18 image
выбираем те что соответствуют image
таблица option_description
option_id name
13 1 категория
14 Подкатегория 1
18 2 категория
выводим то что соответствует выбранным option_id | |
|
|
|
|
|
|
|
для: kolobok16
(04.03.2016 в 11:57)
| | Ну то что у вас во всех трех таблицах есть индекс это понятно, зачем вам на выводе выводить его 2 раза не понятно.
Уберите кавычки в ='65' | |
|
|
|
|
|
|
|
для: KPETuH
(04.03.2016 в 12:11)
| | убрал, таже ошибка | |
|
|
|
|
|
|
|
для: kolobok16
(04.03.2016 в 12:39)
| | Ну судя по ошибке, ошибка не в запросе, а в вашей таблице, я названия таблиц и столбцов брал у вас, судя по ошибки у вас нет нужной таблицы.
У меня мой запрос, на ваших данных, работает. | |
|
|
|
|
|
|
|
для: KPETuH
(04.03.2016 в 12:51)
| | спасибо, получилось.
в общем понял как многотабличный запрос делать ) | |
|
|
|
|
|
|
|
для: kolobok16
(04.03.2016 в 13:15)
| | еще вопросик а если мне надо из таблицы option_description вытащить все значения то как прописать ? | |
|
|
|
|
|
|
|
для: kolobok16
(05.03.2016 в 16:25)
| | вы же поняли как делать
делайте и результат "в студию" | |
|
|
|
|
|
|
|
для: Valick
(05.03.2016 в 23:19)
| | пожалуйста вам результат, конечно не шедевр я и сам понимаю, но главное работает, ну и может Valick если он такой умный оптимизирует ) а так же хотелось бы услышать ответ на вопрос по вытаскиванию всех данных, пробовал некоторые варианты но нечего не вышло, дает ошибки
<?
$db = mysql_connect('localhost','test','1111') or die("Не могу соединиться с MySQL.");
mysql_select_db('test', $db) or die("Не могу подключиться к базе.");
$product_id = $_GET['product_id'];
?>
<div id="opt_block">
<ul id="opts">
<?
$num = 0;
$query = "SELECT
`oc_product_option`.`option_id` AS `option_id_prod`,
`oc_option`.`option_id` AS `option_id_opt`
FROM `oc_product_option`
JOIN `oc_option` ON `oc_option`.`option_id`=`oc_product_option`.`option_id` AND `oc_option`.`type`='image'
WHERE `oc_product_option`.`product_id`=$product_id ORDER BY `oc_option`.`sort_order` ASC";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
while ($num < $num_rows) {
$num++; ?>
<li id="opt<?= $num ?>" class="opt <? if ($num == '1') echo 'active';?>" onclick="funcTab(<?= $num ?>);"><?= $num ?></li>
<? } ?>
</ul>
<div id="opts_content">
<?
$a = '1';
$sql = "SELECT
`oc_product_option`.`option_id` AS `option_id_prod`,
`oc_option`.`option_id` AS `option_id_val`
FROM `oc_product_option`
JOIN `oc_option` ON `oc_option`.`option_id`=`oc_product_option`.`option_id` AND `oc_option`.`type`='image'
WHERE `oc_product_option`.`product_id`=$product_id ORDER BY `oc_option`.`sort_order` ASC";
$result_sql = mysql_query($sql);
while ($value_sql = mysql_fetch_array($result_sql)) {
$value_id= $value_sql['option_id_val'];
$query_sql = "SELECT
`oc_option_value`.`option_value_id` AS `option_value_id_op`, `image`,
`oc_option_value_description`.`name` AS `name`,
`oc_product_option_value`.`price` AS `price`
FROM `oc_option_value`
JOIN `oc_option_value_description` ON `oc_option_value_description`.`option_id`=`oc_option_value`.`option_id` AND `oc_option_value_description`.`option_value_id`=`oc_option_value`.`option_value_id`
JOIN `oc_product_option_value` ON `oc_product_option_value`.`option_id`=`oc_option_value`.`option_id` AND `oc_product_option_value`.`option_value_id`= `oc_option_value`.`option_value_id`
WHERE `oc_option_value`.`option_id`=$value_id";
$result_query = mysql_query($query_sql);
$row = mysql_num_rows($result_query);
$b='0'; ?>
<div class="opt_content <? if ($a == '1') echo 'active';?>" id="opt_content<?= $a ?>">
<table>
<tr>
<? $i=0;
while ($value_query = mysql_fetch_array($result_query)) {
$price = number_format($value_query['price'],0, '.', ''); ?> <td> <?
echo $value_query['name'] ?> <br /><div class="zoom2"> <img src="./image/<?= $value_query['image'] ?>" width='90' height='90'></div><br /><? if ($price > '0') { echo $price; ?> руб.<? } ?><br />
<? $b++;
if ($i==2) {$i=0; echo "</tr><tr>";} else {echo "</td>"; $i++;}
if ($b==$row) {?></tr> </table> </div><? $a++;}
} ?>
<? } ?>
</div>
</div>
|
| |
|
|
|