我有一张名为Cars
的表格
以及一个名为PartsPerCar
carid
和partid
之间存在无直接链接。链接虽然是中间的3个表。我确实有一个名为PartsPerCar
的函数,它获取carid
(它通过中间的表格进行修改)并返回与partid
相关的所有carid
。
例如:如果我选择carid=125
,我可以致电PartsPerCar(125)
并获取:
part id part name
10 Wheel A
12 Wheel D
13 Glass F
我最想得到的是获取所有汽车及其所有部件的清单。
类似的东西:
Car ID , Part ID , Part Name
1 15 engine A
1 17 engine C
.
.
.
125 10 Wheel A
125 12 Wheel D
125 13 Glass F
事情是没有什么可以加入的。
我知道我能做到:
select PartsPerCar(carid)
from Cars
但它并没有帮助我,因为我需要partid
来使用WHERE语句。通过这种方式,我无法做到这一点。
答案 0 :(得分:0)
您的表使用public class SettingsActivity extends PreferenceActivity {
ImageButton[] level = new ImageButton[9];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
PreferenceManager.getDefaultSharedPreferences(this).edit().clear().commit();
PreferenceManager.setDefaultValues(this, R.xml.preferences, true);
level[0] = (ImageButton) findViewById(R.id.imageButton);
level[1] = (ImageButton) findViewById(R.id.imageButton2);
level[2] = (ImageButton) findViewById(R.id.imageButton3);
level[3] = (ImageButton) findViewById(R.id.imageButton4);
level[4] = (ImageButton) findViewById(R.id.imageButton5);
level[5] = (ImageButton) findViewById(R.id.imageButton6);
level[6] = (ImageButton) findViewById(R.id.imageButton7);
level[7] = (ImageButton) findViewById(R.id.imageButton8);
level[8] = (ImageButton) findViewById(R.id.imageButton9);
PopulateButtons();
}
public void PopulateButtons(){
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
for (int i = 0; i < 9; i++) {
String prefKey = String.format("lev%s", i);
System.out.println(prefKey);
if (preferences.getBoolean(prefKey, false) == true) {
level[i].setBackgroundResource(R.mipmap.settings_verbs);
level[i].setOnClickListener(mySettingsHandler);
} else {
level[i].setBackgroundResource(R.mipmap.ic_launcher);
level[i].setOnClickListener(mySettingsHandler);
}
}
}
View.OnClickListener mySettingsHandler = new View.OnClickListener() {
public void onClick(View v) {
Context context = getApplicationContext();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
System.out.println("Running populate method");
for (int i = 0; i < 9; i++) {
if (v.getId() == level[i].getId()) {
String prefKey = String.format("lev%s", i);
if (preferences.getBoolean(prefKey, false) == false) {
System.out.println("Yep");
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(prefKey, true);
editor.commit();
level[i].setBackgroundResource(R.mipmap.settings_verbs);
} else {
System.out.println("nope");
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(prefKey, false);
editor.commit();
level[i].setBackgroundResource(R.mipmap.ic_launcher);
}
}
}
}
};
}
值从函数carid
中检索相应的part_id
,该函数返回一组行,即所谓的table function。在第5小节(继续阅读)中,我们看到了
FROM中出现的表函数也可以在关键字之后 LATERAL,但对于功能,关键词是可选的;功能 参数可以包含对前面FROM提供的列的引用 无论如何都是项目。
您拥有执行查询所需的一切:
PartsPerCar()
这会在表SELECT carid, partid, part_name
FROM cars, PartsPerCar(carid) AS carparts;
和函数CROSS JOIN
之间创建一个cars
,但由于后者的输出受到前者的参数约束,因此它有效就像一个连接条件。