0

私には非常に基本的な質問がありますが、それに対する答えが見つかりません。A と B の 2 つのテーブルがあります。テーブル A には ID (int) を持つ列があり、テーブル B はそれらの ID を説明 (varchar) に接続します。 -s 表 B の説明 (1 対 1 の関係)。現在、次のクエリがあります。

select tableA.* from tableA join tableB on (tableA.id=tableB.description);

これは、私が警告 1292 を取得することを除けば、仕事をするはずです:「切り捨てられた不正な DOUBLE 値」。

2 つのデータ型が一致しないという意味がわかりました。しかし、それを機能させるにはどうすればよいでしょうか。これは簡単な修正であるに違いないと確信しており、私が求めるものは常に使用されています (たとえば、ISBN を本のタイトルに置き換えるなど)...

どんな助けでも大歓迎です!

リクエストに応じて編集

申し訳ありませんが、あいまいではないと思いました... DB構造:

mysql> describe tasks;
+----------+-----------------------+------+-----+---------+----------------+
| Field    | Type                  | Null | Key | Default | Extra          |
+----------+-----------------------+------+-----+---------+----------------+
| tid      | int(10) unsigned      | NO   | PRI | NULL    | auto_increment |
| pid      | int(10) unsigned      | YES  |     | NULL    |                |
| username | varchar(15)           | YES  |     | NULL    |                |
| task     | varchar(1000)         | NO   |     | NULL    |                |
+----------+-----------------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

mysql> describe projects;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| pid   | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| title | varchar(200)     | YES  |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

すべての pid が、同じクエリ内のテーブル プロジェクトの対応するタイトルに置き換えられる「select * from tasks」が必要です。

それが今より明確であることを願っています...

4

1 に答える 1

0

プロジェクトがアタッチされていなくても、次のクエリを使用して両方のテーブルの内容を結合し、タスク テーブルからすべてのエントリを取得できます。

SELECT t.tid, t.username, t.task, p.title 
FROM tasks t 
LEFT JOIN projects p ON t.pid = p.pid;

プロジェクトが添付されたタスクだけが必要な場合は、代わりに次のクエリを使用します。

SELECT t.tid, t.username, t.task, p.title 
FROM tasks t 
JOIN projects p ON t.pid = p.pid;
于 2016-01-22T15:22:20.880 に答える