List all possible combinations

I am trying to do the following.

I want to create a list of all possible relationships between certain things.

For instance. There Maria, Alice, June, Cindy, Elizabeth, Betty, Jax

I would like to create all possible combinations for a list like this:

  • Mary Alice
  • Mary june
  • Mary cindy
  • Mary jax
  • Mary, Alice, June
  • Mary, Alice, Cindy
  • Maria, Alice, Elizabeth ...
  • Mary, Alice, Jax
  • Maria, June, Cindy
  • Mary, June, Elizabeth ...
  • Mary, June, Jax
  • Maria, Cindy, Elizabeth
  • Mary, Cindy, Betty
  • Mary, Cindy, Jax ...
  • Mary, Alice, June, Cindy
  • Maria, Alice, June, Elizabeth
  • Mary, Alice, June, Betty ...
  • Maria, Alice, June, Cindy, Elizabeth
  • Mary, Alice, June, Cindy, Betty

- SQL, Access #? , , !

,

+2
5

, .

ACCESS : (

postres

postgres=# with RECURSIVE y1(b,c,d) as (
postgres(#      with x1(a) as (
postgres(#              values('a')
postgres(#              union all
postgres(#              values ('b')
postgres(#              union all
postgres(#              values ('c')
postgres(#              union all
postgres(#              values ('d')
postgres(#      )
postgres(#      select a,a,1
postgres(#      from x1
postgres(#      union all
postgres(#      select a||b,a,d+1
postgres(#      from x1
postgres(#              join y1 on (a < c)
postgres(# )
postgres-# select *
postgres-# from y1;
  b   | c | d
------+---+---
 a    | a | 1
 b    | b | 1
 c    | c | 1
 d    | d | 1
 ab   | a | 2
 ac   | a | 2
 ad   | a | 2
 bc   | b | 2
 bd   | b | 2
 cd   | c | 2
 abc  | a | 3
 abd  | a | 3
 acd  | a | 3
 bcd  | b | 3
 abcd | a | 4
(15 rows)


postgres=#
+3

SQL . , , , , , :

DECLARE @things TABLE (n nvarchar(50));

INSERT INTO @things (n) VALUES ('Mary'),('Alice'),('June'),('Cindy'),('Elizabeth'),('Betty'),('Jax'), (null);

SELECT 
  ISNULL(t1.n + ',', '') 
  + ISNULL(t2.n + ',', '') 
  + ISNULL(t3.n+ ',', '') 
  + ISNULL(t4.n+ ',', '') 
  + ISNULL(t5.n, '') 
FROM @things AS t1
JOIN @things AS t2 ON 1=1
JOIN @things AS t3 ON 1=1
JOIN @things AS t4 ON 1=1
JOIN @things AS t5 ON 1=1
+2

power set, #

public IEnumerable<IEnumerable<T>> GetPowerSet<T>(List<T> list)
{
    return from m in Enumerable.Range(0, 1 << list.Count)
           select
             from i in Enumerable.Range(0, list.Count)
             where (m & (1 << i)) != 0
             select list[i];
}

:

var names = new List<string> { "Mary", "Alice", "June", "Cindy", "Elizabeth", "Betty", "Jax" };
var powerSet = GetPowerSet(names);
foreach (var nameCollection in powerSet)
{
  foreach (var name in nameCollection)
  {
    Console.Write(name);
  }
  Console.WriteLine();
}

, :

var cleaned = powerSet.Where(nc => nc.Count() > 1 && nc.Count() < names.Count());
+1

, , , , , , , , , 8 , 8 , . , .

0

, SQL-proc .

, :

CREATE TABLE MARY(name VARCHAR(30));
INSERT INTO  MARY VALUES ("Mary");

{do the same for each different name and then}

SELECT * 
  FROM mary, 
       alice,
       june,
       cindy,
       elizabeth,
       betty,
       jax;

!

0

All Articles