RussianDesigner
20.08.2014 - 20:05
забабахал так перенес:
Цитата |
update kodsfrom_tovaruallnorm set product_id=`id`; |
RussianDesigner
20.08.2014 - 20:10
пометил поле product_id

как уникальное
RussianDesigner
20.08.2014 - 20:22
Связываются таблицы

нажимаем сохранить
пишет
Готово
Таким образом, таблицы связаны, будем двигаться дальше
RussianDesigner
20.08.2014 - 21:29
Собственно теперь таблицы приведены к виду как вы и говорили
т.е. нормализация сделана.
Как теперь сделать поиск, чтобы искало как по kodу, так и по optkodу
SELECT
t.id, t.name_tovar
FROM
`withoutkodsform_tovaruallnorm` AS t,
`kodsfrom_tovaruallnorm` AS k
WHERE
t.id = k.product_id AND
t.kod = 'opt1k1' OR
k.optkod = 'opt1k1'
RussianDesigner
21.08.2014 - 16:30
сделал такой код:
<?php
$q = "
SELECT
w.id, w.nametovar
FROM
`withoutkodsform_tovaruallnorm` AS w,
`kodsfrom_tovaruallnorm` AS k
WHERE
w.id = k.product_id AND
w.kod = '$search' OR
k.optkod = '$search' ";
$result=mysql_query( $q );
echo "<strong>Вы выбрали товар с кодом</strong> $search <strong></strong> <br>";
$myrow = mysql_fetch_assoc($result);
echo "<br>"."Это товар: ";
echo $myrow['nametovar']."<br>";
echo "Сорт: ".$myrow['namesort']."<br>";
echo "<br><br>";
echo "<b>Аналоги</b>";
?>
RussianDesigner
21.08.2014 - 17:02
работает с ошибкой
почему непонятно:
так вводим персик
kod pe1
всё нормально

если ввести
optkod тогоже персика opt1pe1
выдает картошку
RussianDesigner
21.08.2014 - 17:09
странно
поменял местами
в коде
WHERE
w.id = k.product_id AND
k.optkod = '$search' OR
w.kod = '$search' ";
ошибка пропала
может в таблице `kodsfrom_tovaruallnorm` не правильно присвоен product_id.
Сделайте поиск в БД 'opt1pe1' . Посмотрите какой ID найдется. и гляньте что лежит в соседней таблице под этим id.
Если "Картошка Обычная" - значит таблица заполнена не правильно.
Если что другое - значит запрос не верный.
Add
Замени на "w.id = k.product_id AND (k.optkod = '$search' OR w.kod = '$search')"
А аналоги это что ?
RussianDesigner
21.08.2014 - 17:23
id присвоены верно
т.к. я переносил их из соседней колонки командой
update kodsfrom_tovaruallnorm set product_id=`id`;
opt1pe1 и pe1 имеют
id 32
а картошка обычная имеет id 1
Цитата |
А аналоги это что ? |
Аналоги это собственно то ради чего всё это и затевалось,
Нужно чтобы поиск выдавал аналоги.
Аналогом является товар, если у него совпадает optkod
а поиск будет только по kod ?
Цитата |
opt1pe1 и pe1 имеют id 32 |
Хм ... а разве так должно быть ? Может ты описался .
Должно быть : pe1 имеет id = 32 , а opt1pe1 имеет product_id = 32, а не id = 32
P.S. исправил id = 36 на id = 32
RussianDesigner
21.08.2014 - 18:39
Цитата |
Хм ... а разве так должно быть ? Может ты описался . |
Дело в том, что opt1pe1 и pe1 имеют id 32
т.к. помимо product_id в той же таблице есть ещё и id
Не знаю, надо ли его было оставлять, но оно есть
вот на скриншоте видно:
таблица1

таблица2
id там может пригодиться.
Ты так и не ответил, какой product_id будет при запросе
SELECT
product_id
FROM
`kodsfrom_tovaruallnorm`
WHERE
optkod = 'opt1pe1'
RussianDesigner
21.08.2014 - 18:48
Цитата |
а поиск будет только по kod ? |
и по kod и по optkod
RussianDesigner
21.08.2014 - 18:54
такой код
$temp = "SELECT
product_id
FROM
`kodsfrom_tovaruallnorm`
WHERE
optkod = 'opt1pe1'";
$res=mysql_query( $temp );
$row = mysql_fetch_assoc($res);
echo $row['product_id'];
выдает 32
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.