Как скопировать значение одного поля данных в другую таблицу в той же базе данных SQLite - PullRequest
0 голосов
/ 28 апреля 2018

Я хотел бы скопировать первичный ключ из одной таблицы в новое поле в другой таблице в той же базе данных SQLite.

В моей таблице лиги у меня есть; LeagueId LeagueName

В моей Таблице Серий у меня есть; SeriesID SeriesLeagueID SeriesName

Я хочу иметь возможность переместить LeagueID в таблицу Series и заполнить его SeriesLeagueID.

Я провел поиск по этому вопросу, но все, что я могу найти, - это как скопировать всю строку или столбец из таблицы в другую.

Любая помощь будет принята с благодарностью.

MainActivity

//On Long Click On The RecyclerView Item An Alert Dialog Is Opened With The Option To Choose Edit/Delete
        recyclerView.addOnItemTouchListener(new RecyclerTouchListener(this,
                recyclerView, new RecyclerTouchListener.ClickListener() {
            @Override
            public void onClick(View view, final int position) {



                int leagueId = leaguesList.get( position ).getId();
                Intent myIntent = new Intent(getBaseContext(), Main2Activity.class);
                myIntent.putExtra("value1", leagueId);
                startActivity(myIntent);
                //Intent myIntent = new Intent(getApplicationContext(), BowlerActivity.class);
                //startActivity(myIntent);

            }

            @Override
            public void onLongClick(View view, int position) {
                showActionsDialog(position);
            }
        }));
    }

Main2Activity

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.league_id );
        Toolbar toolbar = (Toolbar) findViewById( R.id.toolbar );
        setSupportActionBar( toolbar );

        String savedExtra = getIntent().getStringExtra( "value1" );
    TextView myText = (TextView) findViewById(R.id.tvLeagueId);
        final String s = myText.toString();
        myText.setText(savedExtra);


    }

}

1 Ответ

0 голосов
/ 29 апреля 2018

Вы можете использовать что-то вроде следующего, чтобы ОБНОВИТЬ таблицу серий: -

UPDATE Series 
    SET SeriesLeagueID = (
        SELECT LeagueId 
        FROM League 
        WHERE Leaguename = 'Premier'
    ) 
    WHERE SeriesName = 'Test2';

отмечая, что

  • строка в таблице League (из которой можно получить LeagueId), в данном примере определяется как строка со столбцом LeagueName, имеющая значение Premier (предполагается, что вы не знали заранее LeaugeId)
  • обновляемая строка определяется как строка, имеющая значение Test2 в столбце SeriesName.

Код, использованный для тестирования: -

DROP TABLE IF EXISTS League;
DROP TABLE IF EXISTS Series;
CREATE TABLE IF NOT EXISTS League (LeagueId INTEGER PRIMARY KEY, LeagueName TEXT);
CREATE TABLE IF NOT EXISTS Series (SeriesID INTEGER PRIMARY KEY, SeriesLeagueID INTEGER DEFAULT NULL, SeriesName TEXT);
-- Add some leagues
INSERT INTO League (LeagueName) VALUES('Premier'),('A'),('B');
-- Add some Series (note that SeriesLeagueId is null when inserting)
INSERT INTO Series (Seriesname) VALUES('Test1'),('Test2'),('Test3');

UPDATE Series 
    SET SeriesLeagueID = (
        SELECT LeagueId 
        FROM League 
        WHERE Leaguename = 'Premier'
    ) 
    WHERE SeriesName = 'Test2';

Результат: -

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...