Спустя 6 минут, 19 секунд (23.02.2009 - 21:29) jetistyum написал(а):
есть средства SQL
например SELECT **** FROM **** WHERE *** = 'blablabla'
или
_______________________________________ LIKE '%blablabla%'
ну .. и остальное почитай
например SELECT **** FROM **** WHERE *** = 'blablabla'
или
_______________________________________ LIKE '%blablabla%'
ну .. и остальное почитай
Спустя 16 дней, 21 час, 55 минут, 35 секунд (10.03.2009 - 19:24) freed-master написал(а):
А как сделать так чтоб искал по всем таблицам БД во всех полях?
Код |
mysql_query("SELECT DISTINCT * FROM "?" WHERE "?", $sql) |
Спустя 23 часа, 26 минут, 58 секунд (11.03.2009 - 18:51) freed-master написал(а):
Код |
mysql_query("SELECT * FROM wares WHERE `description`='".$query."'", $sql) or die ("Ошибка запроса: " . mysql_error()); |
Почему wares распознается как таблица а не как БД, вернее что написать чтоб распознавал как БД?
Спустя 1 час, 49 минут, 24 секунды (11.03.2009 - 20:40) freed-master написал(а):
Неужели опять все на столько элементарно и все решили, что я уже справился? - вынужден вас огорчить (или не очень) - я НЕ справился!
Спустя 4 минуты, 47 секунд (11.03.2009 - 20:45) twin написал(а):
Нет, как раз наоборот. На столько все абстрактно, что нет слов. Одним простым запросом, да чтоб во всех полях, да во всей базе... Эт Вы, батенька, хватили. Тут нужно скрипт, несколько запросов или один ооочень сложный.
Спустя 3 минуты, 36 секунд (11.03.2009 - 20:49) freed-master написал(а):
ок, буду думать в другом направлении...
Спустя 2 минуты, 38 секунд (11.03.2009 - 20:52) sergeiss написал(а):
Цитата (freed-master @ 11.03.2009 - 18:51) | ||
Почему wares распознается как таблица а не как БД, вернее что написать чтоб распознавал как БД? |
Это потому, что в синтаксисе запроса тут подразумевается таблица, а не БД. И
ты не можешь тут указать БД, ни при каких условиях.
Ежели по всем таблицам надо поиск, то делай по каждой в отдельности.
Да и определись, что же именно ты хочешь найти. Какие поля, какие условия, и т.д. и т.п.
PS. twin опередил немного
Но автору темы лучше бы описать задачу, которую он хочет сделать. Может быть, она решается не так уж и сложно, но не так, как он думал.
Спустя 4 минуты, 13 секунд (11.03.2009 - 20:56) freed-master написал(а):
А как тогда понимать строки из темы:
Код |
// Заносим в переменную <I>$result</I> всю базу $sql="select * from Izdanie"; $result=mysql_query($sql); |
Спустя 6 минут, 51 секунда (11.03.2009 - 21:03) sergeiss написал(а):
"Если на клетке со львом написано 'тигр' - не верь глазам своим" (С)
Эта фраза, которую ты процитировал - неправильная. Мы не заносим в переменную $result "всю базу". Тут создается указатель на выбранные данные из таблицы, в данном случае из таблицы Izdnie. Не более того.
Уже далее, используя этот указатель, можно перебрать все выбранные строки.
Так что именно ты хочешь сделать???
PS. Да и вообще в том "примере" обработка выбранных данных делается через "сидячее место"
Эта фраза, которую ты процитировал - неправильная. Мы не заносим в переменную $result "всю базу". Тут создается указатель на выбранные данные из таблицы, в данном случае из таблицы Izdnie. Не более того.
Уже далее, используя этот указатель, можно перебрать все выбранные строки.
Так что именно ты хочешь сделать???
PS. Да и вообще в том "примере" обработка выбранных данных делается через "сидячее место"
Спустя 10 минут, 9 секунд (11.03.2009 - 21:13) freed-master написал(а):
Цитата |
Так что именно ты хочешь сделать??? |
Как не странно, хочу сделать скрипт поиска в mySQL по четырем полям всех таблиц одной БД (поля в таблицах одинаковые)
Ну написать у меня сейчас врядли получется, а вот подогнать под себя уже готовый можно попробовать. К стати вот нашел что-то похожее: Безопасный и удобный поиск в mySQL Попробую разобраться.
Ну написать у меня сейчас врядли получется, а вот подогнать под себя уже готовый можно попробовать. К стати вот нашел что-то похожее: Безопасный и удобный поиск в mySQL Попробую разобраться.
Спустя 9 минут, 2 секунды (11.03.2009 - 21:22) sergeiss написал(а):
Ежели поля в таблицах одинаковые, и количество их известно, то тогда МОЖНО сделать поиск. Элементарно Если надо - скажу как.
Правда, мне непонятно, зачем делать много таблиц с одинаковой структурой?????
Правда, мне непонятно, зачем делать много таблиц с одинаковой структурой?????
Спустя 1 час, 10 минут, 30 секунд (11.03.2009 - 22:32) freed-master написал(а):
Каждая таблица содержит товары одного вида, а видов много. Конечно можно было сделать все в одну, а при выводе как-нибудь фильтровать (например по префиксу). Но когда, недели две назад, я начинал делать этот каталог, я первый раз в жизни начал использовать и изучать БД. Когда еще ничего не знаешь трудно предусмотреть все детали, а теперь переделывать не охота.
Спустя 34 минуты, 45 секунд (11.03.2009 - 23:07) sergeiss написал(а):
Знаешь, что я тебе скажу насчет "неохота"... Ты можешь сделать это объединение за несколько минут
Иначе ты все равно придешь к необходимости этого действия. И его придется делать. Потом.
Значит, объясняю. И давай я тебе объясню сначала, как сделать объединение таблиц в одну. А потом ты уже будешь делать поиск в одной, объединенной таблице.
Предположим, что у тебя таблица содержит поля f1, f2, f3.
Таблиц - N, с именами table_n, где n=1...N.
В новой таблице надо только добавить поле (назовем его id), которое будет идентифицировать один вид товара.
Таблица с именем table_0 - это итоговая, с полями id, f1, f2, f3 (ее надо будет создать заранее).
Тогда запрос
Иначе ты все равно придешь к необходимости этого действия. И его придется делать. Потом.
Значит, объясняю. И давай я тебе объясню сначала, как сделать объединение таблиц в одну. А потом ты уже будешь делать поиск в одной, объединенной таблице.
Предположим, что у тебя таблица содержит поля f1, f2, f3.
Таблиц - N, с именами table_n, где n=1...N.
В новой таблице надо только добавить поле (назовем его id), которое будет идентифицировать один вид товара.
Таблица с именем table_0 - это итоговая, с полями id, f1, f2, f3 (ее надо будет создать заранее).
Тогда запрос
SQL |
select cast (1 as integer) as id, * from table_1 |
выберет все данные из таблицы 1 и добавит к ним колонку целого типа, и назначит туда значение 1 (пока НЕ надо запускать этот запрос ).
Далее надо сделать запросы по каждой таблице, и объединить их все вместе в единую таблицу. Полученные данные надо записать в итоговую таблицу.
И вот такой запрос объединит все данные и запишет их сразу же в итоговую таблицу:
SQL |
insert into table_0 values ( select cast( 1 as integer) as id, * from table_1 union select cast( 2 as integer) as id, * from table_2 union select cast( 3 as integer) as id, * from table_2 union ... select cast( N as integer) as id, * from table_N ) |
Здесь N - это реальное число, которое надо написать вместо N.
После последнего select не надо union!!!
И я подразумеваю, что товарам из table_1 назначается индекс товара 1, и так для всех типов товаров. Это можно сделать и по-другому как-то.
И еще тут понадобится одна таблица, в которой будет прописано соответствие между номером (индексом товара) и его наименованием.
Спустя 1 день, 17 часов, 25 минут, 29 секунд (13.03.2009 - 16:32) freed-master написал(а):
Подготовил запрос со строками типа:
Код |
select cast( 1 as integer) as id, * from business_desk_book union select cast( 2 as integer) as id, * from business_desk_clock union select cast( 3 as integer) as id, * from business_desk_globe union |
Запросил. А он мне:
Код |
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'integer) as id * from business_desk_book union LIMIT 0, 30' at line |
Спустя 41 минута, 9 секунд (13.03.2009 - 17:14) sergeiss написал(а):
Вот в этом куске откуда union???
SQL |
" from business_desk_book union LIMIT 0, 30" |
union может быть только в самом конце, когда уже весь запрос сформирован. Т.е. после LIMIT!!!
И вообще. Покажи весь запрос, чтобы не гадать.
Спустя 19 минут (13.03.2009 - 17:33) freed-master написал(а):
Кое-что упустил, потом испраил, но результат не сильно отличается:
Код |
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select cast( 1 as integer) as id, * from business_desk_book union select cast( ' at line 2 |
Весь код запроса:
Код |
insert into wares values ( select cast( 1 as integer) as id, * from business_desk_book union select cast( 2 as integer) as id, * from business_desk_clock union select cast( 3 as integer) as id, * from business_desk_globe union select cast( 4 as integer) as id, * from business_desk_kit union select cast( 5 as integer) as id, * from business_desk_stand union select cast( 6 as integer) as id, * from business_desk_visitbox union select cast( 7 as integer) as id, * from business_writing_pen union select cast( 8 as integer) as id, * from business_writing_penleg union select cast( 9 as integer) as id, * from wares_clean_alphabetic union select cast( 10 as integer) as id, * from wares_clean_coverdoc union select cast( 11 as integer) as id, * from wares_clean_datebook union select cast( 12 as integer) as id, * from wares_clean_diploma union select cast( 13 as integer) as id, * from wares_clean_gathering union select cast( 14 as integer) as id, * from wares_clean_literacy union select cast( 15 as integer) as id, * from wares_clean_planbook union select cast( 16 as integer) as id, * from wares_clean_pocket-book union select cast( 17 as integer) as id, * from wares_clean_visitbox union select cast( 18 as integer) as id, * from wares_desk_calendar union select cast( 19 as integer) as id, * from wares_desk_stand union select cast( 20 as integer) as id, * from wares_gift_candle union select cast( 21 as integer) as id, * from wares_gift_pact union select cast( 22 as integer) as id, * from wares_gift_trinket union select cast( 23 as integer) as id, * from wares_gift_wrapper union select cast( 24 as integer) as id, * from wares_kids_bag union select cast( 25 as integer) as id, * from wares_kids_brush union select cast( 26 as integer) as id, * from wares_kids_carton union select cast( 27 as integer) as id, * from wares_kids_chalk union select cast( 28 as integer) as id, * from wares_kids_cover union select cast( 29 as integer) as id, * from wares_kids_creative union select cast( 30 as integer) as id, * from wares_kids_drawing_set union select cast( 31 as integer) as id, * from wares_kids_gouache union select cast( 32 as integer) as id, * from wares_kids_markpen union select cast( 33 as integer) as id, * from wares_kids_paint union select cast( 34 as integer) as id, * from wares_kids_palette union select cast( 35 as integer) as id, * from wares_kids_paper_color union select cast( 36 as integer) as id, * from wares_kids_pencilc union select cast( 37 as integer) as id, * from wares_kids_pencilplast union select cast( 38 as integer) as id, * from wares_kids_plasticine union select cast( 39 as integer) as id, * from wares_kids_rubber union select cast( 40 as integer) as id, * from wares_kids_ruler union select cast( 41 as integer) as id, * from wares_kids_stack union select cast( 42 as integer) as id, * from wares_kids_supplies union select cast( 43 as integer) as id, * from wares_office_box union select cast( 44 as integer) as id, * from wares_office_briefcase union select cast( 45 as integer) as id, * from wares_office_calculator union select cast( 46 as integer) as id, * from wares_office_clipbord union select cast( 47 as integer) as id, * from wares_office_delimiter union select cast( 48 as integer) as id, * from wares_office_docbox union select cast( 49 as integer) as id, * from wares_office_erasable_board union select cast( 50 as integer) as id, * from wares_office_flipchart union select cast( 51 as integer) as id, * from wares_office_folder union select cast( 52 as integer) as id, * from wares_office_looseleaf union select cast( 53 as integer) as id, * from wares_office_registrar union select cast( 54 as integer) as id, * from wares_office_tray union select cast( 55 as integer) as id, * from wares_office_workflow union select cast( 56 as integer) as id, * from wares_paper_a3 union select cast( 57 as integer) as id, * from wares_paper_a4 union select cast( 58 as integer) as id, * from wares_paper_copying union select cast( 59 as integer) as id, * from wares_paper_drawing union select cast( 60 as integer) as id, * from wares_paper_flipchart union select cast( 61 as integer) as id, * from wares_paper_glassine union select cast( 62 as integer) as id, * from wares_paper_note union select cast( 63 as integer) as id, * from wares_paper_office union select cast( 64 as integer) as id, * from wares_paper_whatman union select cast( 65 as integer) as id, * from wares_stamp_accessory union select cast( 66 as integer) as id, * from wares_truck_bodkin union select cast( 67 as integer) as id, * from wares_truck_corrector union select cast( 68 as integer) as id, * from wares_truck_cramp union select cast( 69 as integer) as id, * from wares_truck_defasten union select cast( 70 as integer) as id, * from wares_truck_dispenser union select cast( 71 as integer) as id, * from wares_truck_elastic union select cast( 72 as integer) as id, * from wares_truck_fasten union select cast( 73 as integer) as id, * from wares_truck_file union select cast( 74 as integer) as id, * from wares_truck_glue union select cast( 75 as integer) as id, * from wares_truck_handle union select cast( 76 as integer) as id, * from wares_truck_knife union select cast( 77 as integer) as id, * from wares_truck_pin union select cast( 78 as integer) as id, * from wares_truck_pricetag union select cast( 79 as integer) as id, * from wares_truck_rubber union select cast( 80 as integer) as id, * from wares_truck_rule union select cast( 81 as integer) as id, * from wares_truck_scissors union select cast( 82 as integer) as id, * from wares_truck_sharpener union select cast( 83 as integer) as id, * from wares_truck_staple union select cast( 84 as integer) as id, * from wares_writing_ink union select cast( 85 as integer) as id, * from wares_writing_liner union select cast( 86 as integer) as id, * from wares_writing_marker union select cast( 87 as integer) as id, * from wares_writing_mech_oil union select cast( 88 as integer) as id, * from wares_writing_mech_rolling union select cast( 89 as integer) as id, * from wares_writing_pen_fountain union select cast( 90 as integer) as id, * from wares_writing_pen_gel union select cast( 91 as integer) as id, * from wares_writing_pen_kit union select cast( 92 as integer) as id, * from wares_writing_pen_oil union select cast( 93 as integer) as id, * from wares_writing_pen_paste union select cast( 94 as integer) as id, * from wares_writing_pen_rolling union select cast( 95 as integer) as id, * from wares_writing_pencilb union select cast( 96 as integer) as id, * from wares_writing_roller) |
Спустя 13 минут, 15 секунд (13.03.2009 - 17:46) sergeiss написал(а):
Ты знаешь чего... Я написал синтаксис так, как он в ПостГРе работает. Сейчас уточнил в справке, с мюзикле надо, вроде бы, немного по-другому писать:
Попробуй так (почти то же, что и раньше, только без слова values и без скобок):
Попробуй так (почти то же, что и раньше, только без слова values и без скобок):
SQL |
insert into wares select ...тут весь список селектов, который у тебя сделан уже |
Спустя 9 минут, 48 секунд (13.03.2009 - 17:56) freed-master написал(а):
Так что-ли:
Код |
insert into wares select select cast( 1 as integer) as id, * from business_desk_book union ... select cast( 96 as integer) as id, * from wares_writing_roller |
Все равно:
Код |
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select cast( 1 as integer) as id, * from business_desk_book union select cast( ' at line 2 |
Спустя 11 минут, 53 секунды (13.03.2009 - 18:08) sergeiss написал(а):
Одно слово select (в первой строке) лишнее!!!
Код |
insert into wares select cast( 1 as integer) as id, * from business_desk_book union ... select cast( 96 as integer) as id, * from wares_writing_roller |
Ну ёпрст, посмотри хэлп, что ли
Спустя 16 минут, 59 секунд (13.03.2009 - 18:25) freed-master написал(а):
Те же яйца, только в профиль:
Код |
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'integer) as id, * from business_desk_book union select cast( 2 as integer) as i' at line 2 |
Спустя 4 часа, 56 секунд (13.03.2009 - 22:25) freed-master написал(а):
Методом проб и ошибок, средствами Дримвевера (найти и заменить все...) без особых трудностей заново создал и заполнил одну единственную таблицу. Буду двигаться дальше...
Спустя 12 минут, 8 секунд (13.03.2009 - 22:38) sergeiss написал(а):
Ну, сделал и хорошо Тем более, что сам разобрался - это вообще идеально.
Но с этим запросом все-таки рекомендую разобраться, хотя бы в образовательных целях.
Но с этим запросом все-таки рекомендую разобраться, хотя бы в образовательных целях.
Спустя 1 час, 43 минуты, 22 секунды (14.03.2009 - 00:21) freed-master написал(а):
Теперь вот не хочет добовлять в табдицу новые товары.
Код |
mysql_query("INSERT INTO `wares` WHERE `id`='".$section."' SET `code`='".$code."', `ware`='".$ware."', `description`='".$description."', `producer`='".$producer."', `price`='".$price."'", $sql) or die ("Ошибка запроса: " . mysql_error()); |
Спустя 13 часов, 34 минуты, 12 секунд (14.03.2009 - 13:55) freed-master написал(а):
А можно ли вообще использовать WHERE вместе с INSERT INTO?
Спустя 5 минут, 46 секунд (14.03.2009 - 14:01) freed-master написал(а):
Снова глупо провтыкал....
Код |
mysql_query("INSERT INTO `wares` SET `id`='".$section."' `code`='".$code."', `ware`='".$ware."', `description`='".$description."', `producer`='".$producer."', `price`='".$price."'", $sql) or die ("Ошибка запроса: " . mysql_error()); |
Спустя 11 минут, 44 секунды (14.03.2009 - 14:13) freed-master написал(а):
Теперь все хорошо, вот только не хочет искать. Что не то:
Код |
<?php header("Content-Type: text/html; charset=utf-8"); include_once("admin/config.php"); if (isset($_POST['search'])) { $query = isset($_POST['query'])?$_POST['query']:null; $result = mysql_query("SELECT * FROM `wares` WHERE `ware`='".$query."'", $sql) or die ("Ошибка запроса: " . mysql_error()); while($row = mysql_fetch_assoc($result)) { ?> <tr> <td rowspan="2" id="img_ware"> <img src="images/<?php printf($row["code"]); ?>.jpg"></td> <td colspan="2"> <h2><?php echo htmlspecialchars($row["ware"]); ?></h2> <p><?php echo htmlspecialchars($row["description"]); ?></p> <p><strong>Производитель:</strong> <?php echo htmlspecialchars($row["producer"]); ?></p> <p><strong>Артикул:</strong> <?php echo htmlspecialchars($row["code"]); ?></p> <p><strong>Цена:</strong> <?php if ($row["price"] == 0) echo "Под заказ"; else printf("%01.2f", $row["price"]); ?></p> </td> </tr> <tr> <td align="right"> <form method="POST"> Примечание (цвет и т.п.): <input type="text" name="note" /><br /> <input type="submit" name="submit" value="Добавить в корзину"/> <input name="qty" type="text" id="txt" /> <input type="hidden" name="code" value="<?php echo htmlspecialchars($row["code"]); ?>"/> <input type="hidden" name="ware" value="<?php echo htmlspecialchars($row["ware"]); ?>"/> <input type="hidden" name="price" value="<?php echo htmlspecialchars($row["price"]); ?>"/> </form> </td> <td id="add_space"></td> </tr> <?php }} ?> <form action="" method="post"><input name="query" type="text" /><input name="search" value="Найти" type="submit" /></form> |
_____________