結合処理を実施した際に以下のようなエラーが発生する場合があります。
ERROR 138 (HY000): IDB-1000: ‘a’ and ‘b’ are not joined.
本エラーはInfiniDBがサポートしていない条件で結合処理を実施しようとした場合に発生します。複数の表を結合する場合は、WHERE句に結合条件が指定されている必要があります。
条件を満たしていない場合の例
1 2 3 4 5 |
mysql> SELECT a.col1,b.col2 -> FROM t1 AS a, -> t2 AS b -> WHERE a.col1 = 0; ERROR 138 (HY000): IDB-1000: 'a' and 'b' are not joined. |
上記の場合は、WHERE句で表同士の結合条件が指定されておらず、デカルト結合となるためエラーになります。
条件を満たしている場合の例
1 2 3 4 5 |
mysql> SELECT a.col1,b.col2 -> FROM t1 AS a, -> t2 AS b -> WHERE a.col1 = b.col1; Empty set (0.02 sec) |
上記の場合は、WHERE句で結合条件が指定されているため正常に処理されます。
また、JOINを使用した結合処理についても、同様にON句に結合条件が指定されている必要があります。
条件を満たしていない場合の例
1 2 3 4 |
mysql> SELECT a.col1,b.col2 -> FROM t1 AS a INNER JOIN t2 AS b -> ON b.col1 = 1; ERROR 138 (HY000): IDB-1000: 'a' and 'b' are not joined. |
条件を満たしている場合の例
1 2 3 4 |
mysql> SELECT a.col1,b.col2 -> FROM t1 AS a INNER JOIN t2 AS b -> ON b.col1 = a.col1; Empty set (0.02 sec) |