我无论如何都不是SQL专家所以请原谅我这是否过于简单化。我有一个存储客户品牌选择的表,他们可以选择最多两个品牌。我需要计算单个品牌条目和组合,但我遇到麻烦我需要看一下+ b与b + a相同的组合。到目前为止,我已经:
SELECT DISTINCT brand, brand2, count(*) FROM table GROUP BY brand, brand2;
这让我得到了这个表的输出和"期望"是我想要的
table output desired
brand | brand2| brand | brand2| count(*)| brand | brand2| count(*)|
a | b | a | b | 1 | a | b | 2 |
b | | b | | 2 | b | | 2 |
c | b | c | b | 1 | c | b | 2 |
b | | b | a | 1 | e | | 1 |
b | a | b | c | 1 |
b | c | e | | 1 |
e | |
我希望这很清楚,我真的只是在这里被封锁了。不确定如何获得我需要的输出。我感谢任何帮助。
答案 0 :(得分:1)
试试这个:
function addScheme($url, $scheme = 'http://'){
return parse_url($url, PHP_URL_SCHEME) === null ? $scheme . $url : $url;
}
// parse the html
$dom = new DOMDocument;
$dom->loadHTML($text);
// make sure links are correct
$a_tags = $dom->getElementsByTagName('a');
foreach ($a_tags as $a) {
// make sure that links start with http(s)
$a->setAttribute('href', addScheme($a->getAttribute('href')));
}
// save parsed version
$text = $dom->saveHTML();
答案 1 :(得分:1)
这是一种使用标准sql的方式。
select
case when brand >= brand2 and brand2 <>'' then brand2 else brand end as `brand`,
case when brand >= brand2 and brand2 <>'' then brand else brand2 end as `brand2`,
count(*)
from yourtable
group by 1,2
order by 1,2