trdsql CROSS JOIN
Posted on:
CROSS JOIN is an easy way to create a total.
a.csv
aa
ab
acb.csv
ba
bb
bcWhen you CROSS JOIN two CSV files, a 3x3 output is possible for all combinations.
$ trdsql "SELECT * FROM a.csv CROSS JOIN b.csv"
aa,ba
aa,bb
aa,bc
ab,ba
ab,bb
ab,bc
ac,ba
ac,bb
ac,bc
You can also self-join a single file. For example, let’s create a home and away total table.
cleague.csv
team
Giants
DeNA
Tigers
Carp
Dragons
SwallowsTo simply CROSS JOIN, it looks like this (you can’t write JOIN conditions because there are none).
$ trdsql -ih \
"SELECT h.team,a.team "\
"  FROM cleague.csv AS h "\
" CROSS JOIN cleague.csv AS a"
You can’t play against your own team, so exclude the same team with WHERE h.team != a.team.
$ trdsql -ih -omd \
"SELECT h.team AS home,a.team AS aware " \
"  FROM cleague.csv AS h CROSS JOIN cleague.csv AS a "\
" WHERE h.team != a.team "
| home | aware | 
|---|---|
| Giants | DeNA | 
| Giants | Tirgers | 
| Giants | Carp | 
| Giants | Dragons | 
| Giants | Swallows | 
| DeNA | Giants | 
| DeNA | Tirgers | 
| DeNA | Carp | 
| DeNA | Dragons | 
| DeNA | Swallows | 
| Tirgers | Giants | 
| Tirgers | DeNA | 
| Tirgers | Carp | 
| Tirgers | Dragons | 
| Tirgers | Swallows | 
| Carp | Giants | 
| Carp | DeNA | 
| Carp | Tirgers | 
| Carp | Dragons | 
| Carp | Swallows | 
| Dragons | Giants | 
| Dragons | DeNA | 
| Dragons | Tirgers | 
| Dragons | Carp | 
| Dragons | Swallows | 
| Swallows | Giants | 
| Swallows | DeNA | 
| Swallows | Tirgers | 
| Swallows | Carp | 
| Swallows | Dragons |