0

我有一个关于如何与数据库中带有 id 和项目名称的 2 个表进行关联的问题

我有 2 个数据库,一个是:

CREATE TABLE `alchimie` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`id_potiune` tinyint(3) unsigned NOT NULL default '0',
`nume_potiune` varchar(40) NOT NULL default '',
`nivel_potiune` tinyint(3) unsigned NOT NULL default '1',
`nivel_caracter` tinyint(2) unsigned NOT NULL default '1',
`obiecte_necesare` tinytext NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

这是插入数据的表

图片 1 http://img705.imageshack.us/img705/4522/55040113.png

第二个数据库的一部分是

 CREATE TABLE `iteme` (
 `obiect` int(11) NOT NULL auto_increment,
 `nume` text collate utf8_polish_ci NOT NULL,
  ------------------------------------------------
 PRIMARY KEY  (`obiect`),
 KEY `tip` (`tip`,`pret_cumparare`)
 ) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 

 (obiect in my case is id )

我不知道如何从 php id 调用以与第二个数据库中的名称(nume)关联

而不是 0, 0, 0, 0, 0, 0 (写在 db 中)由 ' , ' 分隔,我想显示项目的名称

例子 :

 INSERT INTO `iteme` VALUES ('1', 'Name of item 1', .....');
 INSERT INTO `iteme` VALUES ('2', 'Name of item 2', .......');
 INSERT INTO `iteme` VALUES ('3', 'Name of item 3 ', .......');

 INSERT INTO `alchimie` VALUES ('1', '100', 'Fusar ', '1', '1', '1, 2, 3');

它会出现在“obiecte necesare”

图片 2 http://img59.imageshack.us/img59/1614/78551339.png

我希望这一次我终于可以让你明白我想要做什么但失败了

4

1 回答 1

0

首先,您需要表中的一列iteme以在下面的示例中引用,alchimie我给它起了一个名字alchimie_id

现在LEFT JOIN,GROUP BYGROUP_CONCAT()将通过查询来解决问题

SELECT a.nume_potiune, 
       a.nivel_potiune,
       a.nivel_caracter,
       i.obiecte_necesare
  FROM alchimie a LEFT JOIN 
(
  SELECT alchimie_id,
         GROUP_CONCAT(nume) obiecte_necesare
    FROM iteme
   GROUP BY alchimie_id
) i
    ON a.id = i.alchimie_id

样本输出:

| NUME_POTIUNE | NIVEL_POTIUNE | NIVEL_CARACTER | OBIECTE_NECESARE |
-------------------------------------------------- ------------------------------------------
| 富萨 | 1 | 1 | 项目1的名称,项目2的名称,项目3的名称 |
| 卡拉库达 | 1 | 1 | (空) |
| 蒂帕尔·奇斯卡 | 2 | 1 | (空) |
| 萨劳 | 2 | 2 | (空) |

这是SQLFiddle演示。

于 2013-06-08T08:58:53.170 回答