Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
1

Как можно запросом получить все записи по общему полю

05.10.2012, 11:34. Показов 1169. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
допустим у нас есть примерная структура таблицы

id name name2
11 test test1
12 test test2
13 test test3
14 cost cost1
15 cost cost2
16 cost cost3

и вот нам попадается запись test2 - как можно запросом вытянуть ее все аналоги по общему полю name (тоесть вытянуть test1 test2 test3) ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2012, 11:34
Ответы с готовыми решениями:

Как объединить несколько строк по общему полю?
Как объединить несколько строк по общему полю? Имею две связанные таблицы: Как в запросе...

Как получить все значения по полю в коллекции?
Например есть коллекция Книги в ней если по индексу обращаться Books.Author то можно взять...

Как запросом LINQ получить все вхождения строки?
Как обычно, пока писал текст, сам допёр до решения. Запрос: Query =...

Вывод данных из разных таблиц по общему полю
Здравствуйте. Это мое первая тема. С Mysql только разбираюсь. Короче. Есть две таблицы table и...

13
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
05.10.2012, 11:47 2
SQL
1
2
3
SELECT *
FROM tab1
WHERE name2 LIKE 'test%'
0
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
05.10.2012, 11:57  [ТС] 3
Grossmeister но это был пример а в реальности слова могут быть очень изменены что кодом невозможно будет узнать корень основы...
да и лайк медленная операция...
0
2432 / 2282 / 594
Регистрация: 27.05.2011
Сообщений: 7,801
05.10.2012, 11:57 4
SQL
1
SELECT `name2` FROM `table` WHERE `name` = 'test'
like очень нагружает сервер
1
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
05.10.2012, 12:01  [ТС] 5
да и как я понял вы предлагаете сделать 2 запроса - 1й узнать поле name а потом уже узнать все его вариации, как это сделать одним запросом , возможно ли это?

Добавлено через 1 минуту
crautcher как и выше писал нам известно поле name2, и получается надо 2 запроса делать
0
2432 / 2282 / 594
Регистрация: 27.05.2011
Сообщений: 7,801
05.10.2012, 12:13 6
SQL
1
SELECT `name2` FROM `table` WHERE `name` = ( SELECT `name` FROM `table` WHERE `name2` = 'test3' );
1
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
05.10.2012, 13:05 7
Цитата Сообщение от Nebiros
да и лайк медленная операция...
Не знаю, как в других СУБД, в Oracle вполне шустрая, особенно если задаешь начало слова и по данной колонке создан индекс.

PS
Правда я невнимательно прочитал вопрос. Я думал, что надо просто найти все строки, значение колонки name2 которых начинается с test.
0
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
15.10.2012, 18:32  [ТС] 8
crautcher - неполучается почемуто вашим способом вытянуть записи, делаю так

PHP
1
2
3
4
5
6
7
// поле base_form - test
// поля word = test1,test2,test3
$word="test1";
$r=mysql_query("SELECT word FROM mytable WHERE base_form = ( SELECT base_form FROM mytable WHERE word='".$word."'");
while($row=mysql_fetch_array($r)){
    echo $row['word'].",";
    }
ничего не выводит - может я чтото тут напутал?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
15.10.2012, 21:41 9
скобку забыли закрыть. должна ошибка вообще то выводиться..

Добавлено через 58 секунд
вот так наверное надо
PHP
1
$r=mysql_query("SELECT `word` FROM `mytable` WHERE `base_form` = ( SELECT `base_form` FROM `mytable` WHERE `word`='".$word."')");
0
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
15.10.2012, 22:50  [ТС] 10
Цитата Сообщение от KOPOJI Посмотреть сообщение
скобку забыли закрыть. должна ошибка вообще то выводиться..
поправил - всеравно неработает, включил чтобы выводились ошибки, вот что показало

XML
1
Warning: mysql_query(): Unable to save result set in ....test.php on line 30 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ....test.php on line 31
и непойму где и что нетак...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
15.10.2012, 22:55 11
а так?
PHP
1
$r=mysql_query("SELECT `word` FROM `mytable` WHERE `base_form` = ( SELECT `base_form` FROM `mytable` WHERE `word`='".$word."' LIMIT 1)");
0
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
16.10.2012, 17:08  [ТС] 12
Цитата Сообщение от KOPOJI Посмотреть сообщение
а так?
добавил еще так
PHP
1
$r=mysql_query("SELECT `word` FROM `mytable` WHERE `base_form` = ( SELECT `base_form` FROM `mytable` WHERE `word`='".$word."' LIMIT 1) LIMIT 10");
лимит 10 в конце добавил так как мне нужно его все формы (а их не больше 10, ато выводит все существующее от всех слов), выводит но какуюто ахенею , выводит нужные формы а потом и все остальные и при этом долговато думает, чтото тут нетак еще...

Добавлено через 3 часа 58 минут
сделал в 2 запроса

PHP
1
2
3
4
5
6
7
$r=mysql_query("SELECT base_form FROM mytable WHERE word='".$word."' LIMIT 1");
if($row=mysql_fetch_array($r)){
  $res=mysql_query("SELECT word FROM mytable WHERE base_form='".$row['base_form']."' LIMIT 10");
  while($rows=mysql_fetch_array($res)){
    echo $rows['word'].",";
    }
  }
вот так работает корректно но медленно, есть еще варианты как можно такое сделать быстрее?
0
2432 / 2282 / 594
Регистрация: 27.05.2011
Сообщений: 7,801
16.10.2012, 18:35 13
индексы проставить
0
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
16.10.2012, 18:45  [ТС] 14
Цитата Сообщение от crautcher Посмотреть сообщение
индексы проставить
в смысле куда что, как использовать?
0
16.10.2012, 18:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2012, 18:45
Помогаю со студенческими работами здесь

Одним запросом wp_query получить записи из нескольких рубрик
Добрый день! Создаю каталог на WP с помощь плагина Woocommerce. Есть задача вывести товары из...

Одним запросом можно получить такое
есть таблица product_id | count | sklad_id нужно получить продукты которых на складах 234,...

Можно ли в Access хранимым запросом добавить записи в неск. табл.?
Собственно добвить и (или) изменить. SQL жрет такую конструкцию: INSERT INTO tblMain (numberPol,...

Подстановка данных из нескольких столбцов одной таблицы в другую таблицу по общему полю Код
Добрый день! Есть таблица сотрудники из 5 столбцов КодСотрудника, Фамилия, Имя, Отчество, УИН...

Можно ли получить запросом каждый месяц и год за последние 4 года?
Можно ли получить запросом каждый месяц и год за последние 4 года? То есть, таблицы как бы и...

Можно запросом через telnet серверу получить часовой пояс клиента?
Пишу сервер(windows). Можно ли как-то запросом через telnet серверу получить часовой пояс...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru