|
|
|
| Информация выводится из базы следующим образом:
<?php
//Выполнение SQL-запроса
unset($result);
$result = mysql_query($query);
//Обработка и вывод результатов SQL-запроса
unset($row);
unset($t1);
unset($t2);
$n = 0;
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
$n++;
$t1 = $row["CRITERIA_DES_TEXT"];
$t2 = $row["CRITERIA_VALUE_TEXT"];
$t1 = iconv('utf-8', 'cp1251', $t1);
$t2 = iconv('utf-8', 'cp1251', $t2);
echo "<br /> $n | t1 $t1 | t2 $t2";
}
|
При этом оказывается, что имеют место смысловые повторы. Например, такие:
1 | t1 Напряжение [В] | t2 12
2 | t1 Номинальная мощность [Вт] | t2 55
3 | t1 Тип ламп | t2 H1
4 | t1 Напряжение [В] | t2 12
5 | t1 Номинальная мощность [Вт] | t2 55
6 | t1 Тип ламп | t2 H1
7 | t1 Напряжение [В] | t2 12
8 | t1 Номинальная мощность [Вт] | t2 55
9 | t1 Тип ламп | t2 H1
10 | t1 Напряжение [В] | t2 12
11 | t1 Номинальная мощность [Вт] | t2 55
12 | t1 Тип ламп | t2 H1
Очевидно, что здесь три смысловые строки (три пары t1 и t2), которые повторяются четыре раза.
В других случаях информация как таковая может содержать как одну строку, так и много строк, а повторов может быть больше или меньше.
Как избавиться от повторов, оставив только уникальную информацию?
(При этом не нарушив соответствие переменных t1 и t2) | |
|
|
|
|
|
|
|
для: Владимир55
(12.07.2012 в 10:59)
| | Хм... вы хотите этого добиться средствами PHP, может добиться уникальности на уровне запроса? | |
|
|
|
|
|
|
|
для: cheops
(12.07.2012 в 17:20)
| | Да, конечно, на уровне запроса такие проблемы решать правильнее.
Правда, их конструкция настолько сложна, что страшно прикасаться, но попробую... | |
|
|
|
|
|
|
|
для: Владимир55
(12.07.2012 в 18:49)
| | Если запрос сформирован, то добиться уникальности уже не сложно. Он не сильно секретный? Можно его посмотреть? | |
|
|
|
|
|
|
|
для: cheops
(12.07.2012 в 21:17)
| | Через РНР я сделал. Работает, но код мог бы быть и короче. А запрос вот какой:
SELECT
ART_ARTICLE_NR,
SUP_BRAND,
DES_TEXTS.TEX_TEXT AS ART_COMPLETE_DES_TEXT,
DES_TEXTS2.TEX_TEXT AS ART_DES_TEXT,
DES_TEXTS3.TEX_TEXT AS ART_STATUS_TEXT
FROM
ARTICLES
INNER JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = ART_COMPLETE_DES_ID
AND DESIGNATIONS.DES_LNG_ID = @LNG_ID
INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
LEFT JOIN DESIGNATIONS AS DESIGNATIONS2 ON DESIGNATIONS2.DES_ID = ART_DES_ID
AND DESIGNATIONS2.DES_LNG_ID = @LNG_ID
LEFT JOIN DES_TEXTS AS DES_TEXTS2 ON DES_TEXTS2.TEX_ID = DESIGNATIONS2.DES_TEX_ID
INNER JOIN SUPPLIERS ON SUP_ID = ART_SUP_ID
INNER JOIN ART_COUNTRY_SPECIFICS ON ACS_ART_ID = ART_ID
INNER JOIN DESIGNATIONS AS DESIGNATIONS3 ON DESIGNATIONS3.DES_ID = ACS_KV_STATUS_DES_ID
AND DESIGNATIONS3.DES_LNG_ID = @LNG_ID
INNER JOIN DES_TEXTS AS DES_TEXTS3 ON DES_TEXTS3.TEX_ID = DESIGNATIONS3.DES_TEX_ID
WHERE
ART_ID = @ART_ID
|
После исполнения получаем:
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
$t1[] = $row["ART_ARTICLE_NR"];
$t2[] = $row["SUP_BRAND"];
$t3[] = $row["ART_COMPLETE_DES_TEXT"];
$t4[] = $row["ART_DES_TEXT"];
$t5[] = $row["ART_STATUS_TEXT"];
}
|
Уникальность интересует относительно параметра ART_COMPLETE_DES_TEXT | |
|
|
|