3

我有 2 个 SQL 表,一个用于用户表,一个用于有关用户的所有信息。(年龄、性别等)

用户表:

id, username, mail, etc

第二张桌子

id, user_id, type_id, content

用户表内容:

1, knife, knife@something.com, etc ...

第二张表:

1, 1, 38 (age)
1, 3, Male

我想获取年龄在 20-40 岁之间且为男性的用户。我现在在这里:

SELECT 
        *
FROM 
        felhasznalok_kieg_adat
        JOIN felhasznalok
                ON felhasznalok_kieg_adat.user_id = felhasznalok.id
WHERE 
   felhasznalok_kieg_adat.kieg_id = "22" 
   and felhasznalok_kieg_adat.tartalom < 21 
   and felhasznalok_kieg_adat.tartalom < 40

它向我显示了 21 到 40 岁之间的结果,但我该如何添加男性或女性的东西?

4

4 回答 4

2

您必须为年龄过滤器加入一次,为性别过滤器加入第二次。

SELECT User.*
FROM User
    JOIN UserContent ageFilter
        ON ageFilter.user_id = User.id
        AND ageFilter.type_id = 1  -- use type_id for joining
    JOIN UserContent genderFilter
        ON genderFilter.user_id = User.id
        AND genderFilter.type_id = 3
WHERE (ageFilter.content < 21 AND ageFilter.content < 40) -- what type is content? You have to make some sort of conversion here!
AND (genderFilter.content = 'Male')

我已用您在问题中描述的内容替换了表和列的名称。
在连接中添加type_id,这样它变得更加可读。

于 2013-04-22T12:48:14.680 回答
0
SELECT *
  FROM felhasznalok_kieg_adat
  JOIN felhasznalok ON felhasznalok_kieg_adat.user_id = felhasznalok.id
 WHERE ((felhasznalok_kieg_adat.kieg_id = "22" 
        AND felhasznalok_kieg_adat.tartalom < 21 
        AND felhasznalok_kieg_adat.tartalom < 40))
   AND felhasznalok_kieg_adat.gender = 'male'
于 2013-04-22T12:44:30.267 回答
0

选择一些值,例如男性的“M”和女性的“F”。然后:

ALTER TABLE felhasznalok_kieg_adat ADD COLUMN sex CHAR(1);

您只选择男性将如下所示:

SELECT *
FROM felhasznalok_kieg_adat
JOIN felhasznalok
ON felhasznalok_kieg_adat.user_id = felhasznalok.id
WHERE ((felhasznalok_kieg_adat.kieg_id = "22" and felhasznalok_kieg_adat.tartalom < 21 and felhasznalok_kieg_adat.tartalom < 40)) and (sex = 'M')
于 2013-04-22T12:47:07.540 回答
0

如果可能,如果您没有性别列,则必须将其添加到表中

您可以在连接中使用BETWEEN 而不是 > 和 < 并且您可以将表格连接为

SELECT *
FROM table1
JOIN table2
ON table1.user_id = table2.id
WHERE ((table1.kieg_id = "22" and table1.tartalom BETWEEN 21 AND 22))


AND table1.gender = 'male'
于 2013-04-22T12:52:15.093 回答