0

編集:私が欲しい結合:

ここに画像の説明を入力

これは私の現在のMySQLテーブルです

テーブル「プライマリ」

+----------+--------+---------+-----------+----------+
| id       | sample | mineral | formula   | link     |
+----------+--------+---------+-----------+----------+
| 1        | 5742   | calcite | CaCO3     | link..   |
| 2        | 3411   | siderite| Fe^2+^CO3 | link..   |
| .        | ....   | ........| ......... | ......   |
+----------+--------+---------+-----------+----------+

およびテーブル「セカンダリ」

+----------+------------+---------+-----------+
| id       | wavenumber | calcite | siderite  |
+----------+------------+---------+-----------+
| 1        | 1          | 256     | 434       |
| 2        | 3          | 254     | 312       |
| 3        | 5          | 251     | 424       |
| 4        | 7          | 257     | 544       |
| 5        | 9          | 258     | 345       |
| 6        | 11         | 257     | 386       |
| 7        | 13         | 326     | 314       |
| 8        | 15         | 456     | 337       |
| 9        | 17         | 236     | 243       |
| 10       | 19         | 246     | 514       |
| 11       | 21         | 254     | 662       |
| 12       | 23         | 258     | 248       |
| 13       | 25         | 230     | 374       |
| 14       | 27         | 224     | 359       |
| 15       | 29         | 216     | 442       |
| 16       | 31         | 236     | 344       |
| 17       | 33         | 247     | 343       |
| ..       | ..         | ...     | ...       |
+----------+------------+---------+-----------+

1 つのクエリで組み合わせることが可能です。

たとえば、プライマリ テーブルの行 2 をクリックした場合、すべてを選択し、weavenumber と列 'siderite' からすべてを選択します。

Weavenumber 列はすべての選択に共通です。唯一の違いは、プライマリ テーブルの ID に対応する列 3、4、5 などです。このような結合を行うことは可能ですか?

すべてのエントリのプライマリ テーブルの xy プロットを作成したいのですが、セカンダリ テーブルでは、weavenumber は x 軸 (水平) であり、方解石、菱鉄鉱などは変数 y 軸 (垂直) です。

今のところ私はこれを持っています:

private void primaryMouseClicked(java.awt.event.MouseEvent evt) {  

int row = primary.getSelectedRow();
int realIndex = primary.convertRowIndexToModel(row);
String Table_click = (primary.getModel().getValueAt(realIndex, 0).toString());

    try {
            String sql = "select * from primary where id='" + Table_click + "' ";
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            if (rs.next()) {


                String add1 = rs.getString("mineral");
                txt_mineral.setText(add1);
                String add2 = rs.getString("formula");
                txt_formula.setText(add2);
                String add3 = rs.getString("link");
                txt_link.setText(add3);

            }

        } catch (Exception e) {

            JOptionPane.showMessageDialog(null, e);
        }

}
4

1 に答える 1

1

これが私が思いついたクエリです:

SELECT     Prime.*, wavenumber, 
           CASE 
             WHEN Prime.mineral = 'calcite' 
             THEN calcite 
             ELSE siderite 
           END AS mineralval 
FROM       Second 
RIGHT JOIN (SELECT * FROM Prime) AS Prime ON 1 = 1

http://sqlfiddle.com/#!2/ee3cf/8

于 2012-10-30T08:07:18.367 に答える