|
|
|
| Здравствуйте.
Имеется следующий код:
$query_firm=mssql_query("SELECT id_firm,name FROM Firm") or die("error in goods query");
$ratiss_num_goods=mssql_num_rows($query_firm);
if(mssql_num_rows($query_firm)>0)
{
while($firms=mssql_fetch_row($query_firm))
{
echo $firms['2']."<br />";
}
}
|
Данный код выводит из базы все имеющиеся записи, id_firm не уникален, как и name. Я так понимаю, что с помощью
sql тут не получится вывести уникальные значения. Подскажите, как вывести только уникальные значения
name(вывести каждую фирму один раз). | |
|
|
|
|
|
|
|
для: V1a8xerss87
(04.07.2009 в 12:45)
| | группированием по полю, что должно быть уникальным
<?
$query_firm=mssql_query("SELECT id_firm,name FROM Firm GROUP BY name ") or die("error in goods query");
?>
|
| |
|
|
|
|
|
|
|
для: Ильдар
(04.07.2009 в 13:09)
| | хм...делаю вот такой запрос:
$query_Goods=mssql_query("SELECT id_city,id_firm,id_subgroup,name,publish FROM Price GROUP BY id_firm WHERE id_subgroup=".$id_subgroup." AND publish=1 AND id_city=48") or die("error in goods query");
|
Выдает следующие ошибки:
Warning: mssql_query() [function.mssql-query]: message: Incorrect syntax near the keyword 'WHERE'. (severity 15) in Z:\home\site.ru\www\script.php on line 647
|
Warning: mssql_query() [function.mssql-query]: Query failed in Z:\home\site.ru\www\script.php on line 647
error in goods query
|
Что я не так делаю? | |
|
|
|
|
|
|
|
для: V1a8xerss87
(04.07.2009 в 15:38)
| | GROUP BY применяется при использовании агрегирующих функций в запросе
("SELECT DISTINCT id_firm,name FROM Firm")
|
| |
|
|
|
|
|
|
|
для: GeorgeIV
(04.07.2009 в 15:47)
| | А можно немного поподробней? Как сделать подругому?
---
Спасибо, попробую | |
|
|
|
|
|
|
|
для: GeorgeIV
(04.07.2009 в 15:47)
| | >GROUP BY применяется при использовании агрегирующих функций в запросе
Замечание верное, но адресовать имет смысл персонажу "Ильдар". | |
|
|
|
|
|
|
|
для: V1a8xerss87
(04.07.2009 в 12:45)
| | Вообще-то если в таблице Firm ни поле id_firm, ни поле name не является уникальным, это повод задуматься "а может ну её нахрен такую таблицу..." | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2009 в 15:54)
| | Задумывались и уже давноооо :-D ))))) Не мы эту таблицу придумали, но приходитсО с ней работать :(
Проблема не решена. DISTINCT не помогает совсем: выводит только 1 запись из БД. | |
|
|
|
|
|
|
|
для: V1a8xerss87
(04.07.2009 в 16:33)
| | >DISTINCT не помогает совсем: выводит только 1 запись из БД.
Эт врядли.
В смысле, если у Вас там есть хотя бы две записи с разными полями, то дело не в DISTINCT. | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2009 в 16:38)
| | А возможно ли все-таки использовать GROUP BY?
+ Какой синтаксис использование DISTINCT?
+ Возможно ли как то силами php без SQL выводить только одно значение? | |
|
|
|
|
|
|
|
для: V1a8xerss87
(04.07.2009 в 17:04)
| | + Можно, но не нужно. Смысла нет.
+ DISTINCT ставится перед перед списком полей в SELECT. Это приводит к тому, что сервер исключает из отчета дубли строк.
+ Можно, но не нужно. Смысла нет.
Проблема,наверное, не [только] в том, как Вы формируете запрос, а в том, как Вы выводите его результат. | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2009 в 17:10)
| | Ну собственно есть таблица с товарами, в которой содержится инфа о товарах и так же, идентификатор фирмы, производящий данный товар из другой таблицы. Я выбираю из таблицы c товарами все записи, где id_city=48, получаю идентификатор фирмы, через который уже из таблицы с фирмами получаю имя фирмы.
Вот сам код:
$query_Goods=mssql_query("SELECT DISTINCT id_city,id_firm FROM Price WHERE id_city=48") or die("error in goods query");
$num_goods=mssql_num_rows($query_Goods);
if(mssql_num_rows($query_Goods)>0)
{
while($Goods=mssql_fetch_row($query_Goods))
{
$q=mssql_query("SELECT id_firm,name FROM Firm WHERE id_firm=".$Goods[1]."");
$r=mssql_fetch_row($q);
echo $r['1']."<br />";
}
}
|
В итоге, без DISTINCT я получаю список имен фирм, но часть имен повторяется. С DISTINCT я получаю только первую запись из таблицы с фирмами. | |
|
|
|
|
|
|
|
для: V1a8xerss87
(04.07.2009 в 17:21)
| | 1. уберите внутренний запрос - он не нужен. Либо выполните полный вывод результатов из него. А не только первую из строк.
2. расставьте отступы внутри составных операторов.
3. выведите оба поля запроса, а не только второе.
4. не надо писать $r['1'] при обращении к элементу 1. Надо писать $r[1] | |
|
|
|
|
|
|
|
для: V1a8xerss87
(04.07.2009 в 17:21)
| | У меня еще вопрос по синтаксису, а на кой вы выбирвете поля, которые не используете: Id_city в первом запросе и id_firm во втором. DISTINCT имеет влияние на всю выборку, т.е на уникальность сочетания полей | |
|
|
|
|
|
|
|
для: GeorgeIV
(04.07.2009 в 17:38)
| | Все заработало. Все получилось. Всем спасибо. :) | |
|
|
|