gpt4 book ai didi

sql - MySQL 中 VIEW 的 SELECT 语句未返回所有需要的行

转载 作者:行者123 更新时间:2023-11-29 01:01:09 25 4
gpt4 key购买 nike

我的 MySQL 查询需要帮助:

CREATE OR REPLACE 
DEFINER = CURRENT_USER
VIEW users_phpscheduleit
AS
SELECT
u.uid AS memberid,
pass AS password,
mail AS email,
pv1.value AS fname,
pv2.value AS lname,
pv3.value AS phone,
e_add, e_mod, e_del, e_html, e_app,
is_admin, lang, timezone_scheduleit,
institution, logon_name
FROM
users u, profile_values pv1, profile_values pv2, profile_values pv3
WHERE
u.uid = pv1.uid AND u.uid = pv2.uid AND u.uid = pv3.uid
AND
pv1.fid = 26
AND
pv2.fid = 27
AND
pv3.fid = 8;

这不能包含 list of things ,为了使其在 PHP 应用程序中使用 INSERT 或 UPDATE 查询中的 View 表保持可编辑状态,我正在与另一个 PHP 系统集成。我的用户表有 442 长,我只得到其中的 1/2。

问题:
我无法获取 users 表中的所有行,因为它们显然并非都具有 26、27 或 8 的 profile_values.fid

问:我如何调整语句以在不破坏 the rules 的情况下仍然包含那些内容?启用可编辑性?

ps.出于好奇,我正在尝试通过 Drupal DB 对 phpScheduleIt 用户进行身份验证

最佳答案

I am not able to get all the rows in the users table because they obviously don't all have a profile_values.fid of 26, 27 or 8.

那是因为您的查询使用了 INNER JOIN,如果您需要可能没有支持记录的数据,则需要使用 OUTER(即左/右)JOIN。您的查询采用 ANSI-89 语法,不一致地实现 OUTER JOIN 语法。这是使用 ANSI-92 语法重写的查询:

   SELECT u.uid AS memberid,
pass AS password,
mail AS email,
pv1.value AS fname,
pv2.value AS lname,
pv3.value AS phone,
e_add, e_mod, e_del, e_html, e_app,
is_admin, lang, timezone_scheduleit,
institution, logon_name
FROM USERS u
LEFT JOIN PROFILE_VALUES pv1 ON pv1.uid = u.uid
AND pv1.fid = 26
LEFT JOIN PROFILE_VALUES pv2 ON pv2.uid = u.uid
AND pv2.fid = 27
LEFT JOIN PROFILE_VALUES pv3 ON pv3.uid = u.uid
AND pv3.fid = 8

关于sql - MySQL 中 VIEW 的 SELECT 语句未返回所有需要的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3072695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com