2

我正在使用 Joomla 2.5。我正在使用 MYSQL 数据库。我有一个job_field包含以下列的表格:

cat_id  |  location_id
-----------------------
 1,4    |   66,70

我需要将它与另一个表进行比较job_value

cat_id  |  location_id | name
--------------------------------
 1      |   70         | Atul
 4      |   70,80      | Amit
 4      |   80,66      | Amol
 1      |   66         | Pritam    
 3      |   70         | Rahul
 2      |   66,90      | Ajit
 1      |   74         | Raju
 4      |   65,22      | Manoj

我希望输出将第一个表中cat_id的列与第二个表列和.location_idjob_detailsjob_valuecat_idlocation_id

它将检查第一个表 ( job_details) 中的每个值,即location_id列值 (66, 70) 与第二个表 ( job_value)location_id列分开。我将得到输出数组

  Array (
    1 70     Atul
    4 70,80  Amit
    4 80,66  Amol
    1 66     Pritam
 )
4

2 回答 2

3

这是一个坏坏结构。即使问题可以解决,也不应该解决。它会很慢,而且无法维护。

而不是糟糕的结构,应该为这部分数据库创建一些类似的东西:

CREATE TABLE PERSON (
    person_id BIGINT,
    name VARCHAR(64),
    PRIMARY KEY (person_id)
);

CREATE TABLE LOCATION (
    location_id BIGINT,
    name VARCHAR(64),
    PRIMARY KEY (location_id)
);
CREATE TABLE CAT (
    cat_id BIGINT,
    name VARCHAR(64),
    PRIMARY KEY (cat_id)
);

CREATE TABLE CAT_LOCATION (
    cat_id BIGINT,
    location_id BIGINT,
    PRIMARY KEY (cat_id,location_id),
    FOREIGN KEY (cat_id) REFERENCES cat(cat_id),
    FOREIGN KEY (location_id) REFERENCES location(location_id)
);

CREATE TABLE CAT_LOCATION_PERSON (
    cat_id BIGINT,
    location_id BIGINT,
    person_id BIGINT,
    PRIMARY KEY (cat_id,location_id,person_id),
    FOREIGN KEY (cat_id) REFERENCES cat(cat_id),
    FOREIGN KEY (location_id) REFERENCES location(location_id),
    FOREIGN KEY (person_id) REFERENCES person(person_id)
);

然后通过简单的连接得到你想要的东西比容易的容易:

SELECT cl.cat_id, cl.location_id, p.name
FROM CAT_LOCATION cl 
JOIN CAT_LOCATION_PERSON clp on cl.cat_id = clp.cat_id and cl.location_id=clp.location_id
JOIN PERSON p on clp.person_id = p.person_id

(我拒绝编写一个以指定格式提供输出的查询,数值用逗号分隔......(尽管可以通过 MySQL 的 GROUP_CONCAT 功能轻松实现))

于 2012-12-28T13:33:56.113 回答
0

试试这个 ::

SELECT 
* 
FROM table1
JOIN table2  ON FIND_IN_SET(table1.location_id, table2.location_id) > 0

您还可以 在 MySQL "IN" 子句中引用逗号分隔值

于 2012-12-28T13:32:04.667 回答