AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-150077

mike16889's questions

Martin Hope
mike16889
Asked: 2020-10-28 22:42:38 +0800 CST

MariaDB 错误 1048 GeomFromText 返回为空

  • 0

我正在尝试将数据库从旧服务器恢复到新服务器,但我的几何列未导入

例子

UPDATE `property_floor` SET
`floorBounds` = ST_GeomFromText('MULTIPOINT((115.823402 -32.064224),(115.823509 -32.079125),(115.843336 -32.064224)')
WHERE `floorID` = '1'

查询中的错误 (1048):列 'floorBounds' 不能为空

我已经尝试过使用 SRID 和不使用它。都试过ST_GeomFromText了GeomFromText

我不知道出了什么问题,这是一个错误吗?我的数据格式是否错误(对我来说看起来不错,但我可能遇到了其中一个盲点)还是发生了一些变化?

floorBounds是多点类型,我尝试导入的数据是从正常运行的数据库中导出的。

mariaDB 版本10.3.25-MariaDB-0+deb10u1

我只是注意到旧服务器没有使用 mariaDB 而是 MySQL (ver 5.7.31-0ubuntu0.16.04.1) 但它应该仍然兼容,对吗?

mariadb geometry
  • 1 个回答
  • 188 Views
Martin Hope
mike16889
Asked: 2020-04-03 20:21:09 +0800 CST

条件内连接

  • 1

我需要以有条件的方式基于 2 个不同的表为用户获取允许的 itemTypes。如果用户 userGroup 在表中有任何条目,它应该只显示ANDuserGroupItemTypes之间共有的项目,但如果该用户 userGroup中不存在条目,那么它应该只从userGroupItemTypesclientItemTypesuserGroupItemTypesclientItemTypes

项目类型

itID    itemType
1       Item 1
2       Item 2
3       Item 3

客户

cID     client
1       Client 1

用户组

ugID    userGroup
1       Group 1
2       Group 2

用户

uID     user     cID     ugID
1       Fred     1       1
2       Sam      1       2

客户项目类型

cID     itID
1       1
1       2
1       3

userGroupItemTypes

ugID    itID
2       1
2       2

结果应该是:

uID     itID     user     itemType
1       1        Fred     Item 1
1       2        Fred     Item 2
2       1        Sam      Item 1
2       2        Sam      Item 2
2       3        Sam      Item 3

基本上我认为查询的功能应该如下:

SELECT u.uID, it.itID, u.user, it.itemType
FROM users u
INNER JOIN clientItemTypes cit ON cit.cID = u.CID
INNER JOIN itemTypes it ON it.itID = cit.itID
IF((SELECT COUNT(*) FROM userGroupItemTypes GROUP BY uID) > 0, INNER JOIN userGroupItemTypes ugit ON ugit.ugID = u.ugID, DO NOTHING)

但我不知道如何实际实现这一点。任何帮助将不胜感激

编辑:这是一个dbfiddle

mysql join
  • 1 个回答
  • 300 Views
Martin Hope
mike16889
Asked: 2019-10-24 19:24:04 +0800 CST

PDO 使用枚举在 WHERE 上返回 0 行

  • 0

我正在尝试为报告构建查询。报表会有几个字段可以过滤,其中一个是jobStatus字段,它是一个枚举。

这是我的查询

SELECT * FROM jobs j
LEFT JOIN property p ON j.propertyID = p.propertyID
LEFT JOIN property_buildings b ON b.buildingID = j.buildingID
LEFT JOIN departments d ON j.dptID = d.dptID
LEFT JOIN jobs_timeframe jt ON j.jobTimeframeID = jt.jobTimeframeID
LEFT JOIN jobs_type t ON j.jobTypeID = t.jobTypeID
LEFT JOIN floors f ON f.floorID = j.floor
LEFT JOIN (
    SELECT group_concat(a.assetNo) AS assets, ja.jobID
    FROM jobs_assets ja
    INNER JOIN assets a ON a.assetID = ja.assetID
    GROUP BY jobID
    ORDER BY assetNo ASC
) ja ON ja.jobID = j.jobID
LEFT JOIN (
    SELECT group_concat(o.obsNo) AS observations, oj.jobID
    FROM observationJobs oj
    INNER JOIN observation o ON o.obsID = oj.obsID
    GROUP BY jobID
    ORDER BY obsNo ASC
) jo ON jo.jobID = j.jobID
WHERE j.ClientID = :clientID AND j.jobStatus = :status
LIMIT :limit OFFSET :offset

这是我的绑定参数::clientID => 14, :status => 'Draft', :limit => 25, :offset => 0

如果我排除它,j.jobStatus它工作正常并显示 19 个结果,混合了 jobStatus',包括Draft,如果我包括尝试并使用 PDO 进行过滤,Finished我得到一个成功的查询,但有零行(应该是 14 行,1行, 3 为和 1 为空)Approvedj.jobStatusDraftApprovedFinished

如果我不安全地将 :status 的变量放在查询中(像这样WHERE j.ClientID = :clientID AND j.jobStatus = '.$status.' LIMIT :limit OFFSET :offset),它工作正常并显示 14 个预期结果。我无法为我的生活弄清楚为什么。

我唯一能想到的是它是一个枚举,但我的印象是它们被视为除了实际存储之外的所有东西的字符串。

编辑:绑定代码:

$stmt->bindParam(':limit', $lim, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->bindParam(':status', $params[':status'], PDO::PARAM_STR);
$stmt->bindParam(':clientID', $params[':clientID'], PDO::PARAM_INT);
mysql php
  • 1 个回答
  • 231 Views
Martin Hope
mike16889
Asked: 2019-09-27 23:38:37 +0800 CST

基于链接表的触发器

  • 0

好的,我有 3 个表:

客户:

ClientID (国际)汽车公司

clientName (可变字符)

tnt_group:

groupID (国际)汽车公司

ClientID (int)外键

tnt_item:

itemID (国际)汽车公司

itemNo (整数)

groupID (int)外键

现在,我需要为tnt_itemitemNo中的每条记录生成一个记录,每个记录从 1 开始,以便每个客户看到他们的项目计数从 1 开始。我尝试添加一个触发器,如下所示:ClientID

BEGIN
    SET NEW.itemNo = (
        SELECT IF(t.itemNo IS NULL, 1, IFNULL(MAX(t.itemNo), 0) + 1)
        FROM (
            SELECT IFNULL(i.itemNo, 0) AS itemNo, g.groupID, g.ClientID, cg.ClientID AS cgClient, cg.groupID  AS cgGroup
            FROM tnt_group cg
            INNER JOIN tnt_group g ON cg.ClientID = g.ClientID
            INNER JOIN tnt_item i ON i.groupID = g.groupID
        ) AS t WHERE t.cgGroup = NEW.groupID
        GROUP BY cgClient
    );
END

这是有效的,在客户已经拥有至少一项资产的情况下,它获得最大值itemNo然后添加一项。它失败的地方是,如果客户还没有任何物品,无论我做什么,它都会将第一个设置itemNo为NULL

关于我做错了什么的任何提示?

mysql trigger
  • 1 个回答
  • 31 Views
Martin Hope
mike16889
Asked: 2018-07-02 17:16:11 +0800 CST

在 MySQL 中存储线串的点数据

  • 2

好的,我需要将数据存储在折线的某些点上,而不是其他点上。

我目前的做法是我有 3 张桌子

line:
lineID INT AUTO INCREMENT
lineType INT
forkFrom INT

linePoint:
pointID INT AUTO INCREMENT
lineID INT
lat DECIMAL
lng DECIMAL

pointMarker:
pointID INT
someDataFields...

但是一条线,假设它有 20 个点,将占用表格中的 20 行。

我想要一个带有线串字段的线表,从而不需要 linePoints 表。但是我没有办法引用一行中的特定点。

示例:这条线是一条水管,它有很多点,因为它绕过拐角,因此,在其中一些点上,它有一个水龙头或一个水表,我该如何记录呢?

我是否使用纬度/经度作为索引,然后在我的代码中以某种方式检查孤立点(如果线被修改)?还是有更好的方法来做到这一点?

还有一些行是主行的“分叉”或“分支”,为此我目前正在使用“forkFrom”列来存储“分叉”起始点的 ID。我将如何使用 lineString 执行此操作?这就是 multiLineString 的用途吗?

我在处理行的前端代码上遇到了一些问题,所以现在是更改数据存储方式的好时机,因为我可能不得不重新编写大量代码来处理它。还不如多写几行,把数据库方面的事情也整理一下,而不是修复现在坏掉的东西,然后在我最终更改数据库时把所有东西都扔到窗外。

mysql spatial
  • 2 个回答
  • 729 Views
Martin Hope
mike16889
Asked: 2018-04-27 16:17:07 +0800 CST

将两个整数存储为小数

  • 5

将两个整数存储为小数有什么缺点?

我将资产详细信息存储在表中,每种资产类型都有自己的表(每种资产都非常不同)并使用另一个表来定义资产表,因此每个资产表都有一个整数 ID,每个资产也有一个整数 ID。

我有两种不同的场景,这可能很方便:

  1. 有一个“审计”表存储信息,如:这个用户对那个项目做了这个

  2. 有人被指派处理这种类型的资产。我正在考虑像 assetType.assetID 这样存储它,所以资产类型 5 和 id 99 将是十进制的 5.99

我很少需要根据 5.99 进行选择,我只是查询存储 5.99 的记录,然后拆分它并使用函数转到表 5 记录 99。

我无法将 assetID 绑定到特定表;assetType 是引用资产表的表中条目的 ID(定义表名、主键列等),所以看起来我已经无法以任何一种方式使用外键约束。

有很多资产表,比如asset_tmv和asset_backflow。资产根据其所在的表分配类型,因为为每个资产存储的数据差异很大。

我意识到我可以使用 2 个整数字段来实现这一点。我想知道的是:缺点是什么?

mysql database-design
  • 3 个回答
  • 636 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve