Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何进行此选择查询?_Php_Mysql - Fatal编程技术网

Php 如何进行此选择查询?

Php 如何进行此选择查询?,php,mysql,Php,Mysql,我想在mysql中创建一个SELECT查询 有两个表,users和image\u info,需要选择以下列 用户表:user\u id、用户名、dob 图像信息:图像,图像路径 选择图像时。我只需要从image_info表中获取主映像。在image_info表中有一列,如: 图像类型枚举('primary','gallery')默认为空 我就是这样试的 $q = "SELECT u.user_id, u.username, u.dob, i.image, i.image_path

我想在mysql中创建一个
SELECT
查询

有两个表,
users
image\u info
,需要选择以下列

用户表:
user\u id、用户名、dob

图像信息:
图像,图像路径

选择图像时。我只需要从image_info表中获取主映像。在image_info表中有一列,如:

图像类型枚举('primary','gallery')默认为空

我就是这样试的

$q = "SELECT u.user_id, u.username, u.dob, i.image, i.image_path
            FROM users u 
                INNER JOIN image_info i ON i.user_id = u.user_id
            WHERE u.sex = 'Male'
            ORDER BY u.date_registered DESC LIMIT 6";
但它无法正常工作以获得预期的输出

更新: 我的表格输出

mysql> select user_id, username, sex from users;
+---------+-------------+--------+
| user_id | username    | sex    |
+---------+-------------+--------+
|       1 | thara1234   | Male   |
|       2 | root234     | Male   |
|       3 | kamal123    | Female |
|       4 | Nilantha    | Male   |
|       5 | Ruwan324324 | Male   |
+---------+-------------+--------+
5 rows in set (0.00 sec)

mysql> select user_id, image, image_type from image_info;
+---------+----------------------------+------------+
| user_id | image                      | image_type |
+---------+----------------------------+------------+
|       2 | 2_root234_1433564588.jpg   | primary    |
|       1 | 1_thara1234_1433555104.jpg | primary    |
|       1 | 1_thara1234_1433556481.jpg | gallery    |
|       4 | 4_Nilantha_1433573768.jpg  | primary    |
+---------+----------------------------+------------+
4 rows in set (0.03 sec)

多谢各位

我想,问题是:-

SELECT User.user_id, User.username, User.dob, Image.image, Image.image_path
FROM 
    users User LEFT JOIN image_info Image
    ON User.user_id = Image.user_id AND Image.image_type = 'PRIMARY'
WHERE User.sex= 'Male'
ORDER BY User.date_registered DESC LIMIT 6

正如您所说,您需要用户是否有图像,您应该在查询中使用left join:

SELECT u.user_id, u.username, u.dob, i.image, i.image_path
            FROM users u 
                LEFT JOIN image_info i ON i.user_id = u.user_id
            WHERE u.sex = 'Male' and (i.image_type = 'primary' or i.image_type is null)
            ORDER BY u.date_registered DESC LIMIT 6;

更多信息。

那么您得到的确切信息是什么,以及预期的输出是什么?您可以向查询语句
和i.image\u type='primary'
添加另一个筛选器,那么为什么不像
那样对其进行筛选呢。。。其中u.sex='Male'和i.image\u type='primary'…
@mdh.heydari
如果image\u表中同时包含此选定用户的主图像和库图像,则SQL语法中存在错误。我的查询获取所有记录。但是我想知道主映像是否可用于此选定用户,我需要将该映像与我的select查询一起获取..正如您提到的,如果image_表同时具有此选定用户的主映像和库映像。我的查询获取所有记录。但是我想,如果主映像可用于此选定用户,那么我需要将该映像与我的select查询一起获取,它将根据
用户
获取相关记录,从图像类型为的
image\u info
表格PRIMARY@MCC您必须使用
LEFT JOIN
Image。Image\u type='PRIMARY'
需要在
上切换到
,而不是
上的
位置,请参见我的更新答案很棒!!然后确保选择它作为答案:)