Lehet, hogy a futásidejű kivételt (oszlop LIST_ID nem létezik) származik bal csatlakozni?

szavazat
0

Az én Android Studio projekt már végre egy adatbázis (által irányított szoba). Az én Dao fájlt, már a következő lekérdezést, amely hibát okoz:

SELECT tab1.list_id, ... FROM  
            (SELECT list_id, ...  FROM list_table) AS tab1  
            LEFT JOIN  
            (SELECT list_id, ...  FROM list_table NATURAL JOIN product_table NATURAL JOIN list_product_table GROUP BY list_id) AS tab2  
            ON tab1.list_id = tab2.list_id  
            ORDER BY list_position ASC, tab1.list_id ASC;

A hiba mondja java.lang.IllegalArgumentException: column '`list_id`' does not exist. A hiba rámutat a fájlt, amelyet automatikusan létrehozott szobában.

...
return __db.getInvalidationTracker().createLiveData(new String[]{list_table,product_table,list_product_table}, false, new Callable<List<ShoppingListDisplayValues>>() {
      @Override
      public List<ShoppingListDisplayValues> call() throws Exception {
        final Cursor _cursor = DBUtil.query(__db, _statement, false, null);
        try {
          final int _cursorIndexOfPosition = CursorUtil.getColumnIndexOrThrow(_cursor, list_position);
          final int _cursorIndexOfId = CursorUtil.getColumnIndexOrThrow(_cursor, list_id);
          ...

Ahhoz, hogy konkrétabb, a hiba pont a sort:

final int _cursorIndexOfId = CursorUtil.getColumnIndexOrThrow(_cursor, list_id);

Most a kérdés az, lehet ez a hiba következtében a bal csatlakozni? Az igazán furcsa az, hogy a kód működik a néhány eszközökre és a másik pedig nem. Lenne igazán boldog, ha valakinek van egy ötlete.

A kérdést 02/12/2019 23:55
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Így, miután a hibakeresés egy pár órát találtam a hibát, és a megoldást.

Hiba származási

A hiba abban rejlik, hogy a szobában perzisztencia könyvtárban. Ha ezt a könyvtárat a készülékek API kisebb, mint 27 (legalábbis ez az, amit azt hiszem, mert teszteltem 3 eszközök különböző API-k), akkor egy kivétel lesz dobott IF használ tábla előtagot a SELECTnyilatkozatot. A „táblázatban előtag” értem például tab1.a tab1.list_id.

A megoldás:

Csak használ egy alias az oszlop, amely egy tábla előtag. Ahelyett

SELECT tab1.list_id, ... FROM

ír

SELECT tab1.list_id AS list_id, ... FROM

Válaszolt 03/12/2019 01:38
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more