gpt4 book ai didi

mysql - 协助 MySQL JOIN

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

我有两个表,一个有类别和子类别。每个类别和子类别都有一个 id,如果它是一个子类别,它有一个 topid != 0 来表示它是什么子类别。另一个表“markers”有一个字段“cat”,它与类别字段“name”相关联现在我想从带有 category.id = 4category.topid = 的标记中选择所有内容4 所以我尝试了这个查询:

SELECT * FROM `xymply_markers`
JOIN `xymply_categories`
ON xymply_markers.cat = xymply_categories.name
WHERE xymply_categories.topid=4
OR xymply_categories.id=4

即使我的表“标记”中确实有这样的元素,它也不会返回任何东西。任何援助将不胜感激!

表架构:

`xymply_categories` (
`id` int(11) NOT NULL auto_increment,
`topid` int(11) NOT NULL,
`name` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;

`xymply_markers` (
`created` date NOT NULL,
`id` int(11) NOT NULL auto_increment,
`sdate` date NOT NULL,
`hdate` date NOT NULL,
`name` varchar(60) NOT NULL,
`address` varchar(80) NOT NULL,
`unit` varchar(6) NOT NULL,
`lat` decimal(10,7) NOT NULL,
`lng` decimal(10,7) NOT NULL,
`type` varchar(30) NOT NULL,
`userid` int(11) NOT NULL,
`adtext` text NOT NULL,
`phone` varchar(20) NOT NULL,
`email` varchar(30) NOT NULL,
`url` varchar(30) NOT NULL,
`cat` varchar(4) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=151 DEFAULT CHARSET=utf8 AUTO_INCREMENT=151 ;

示例数据:

xymply_categories:

id  1
topid 0
name 'vehicle'
--------------
id 2
topid 1
name 'bike'
--------------
id 3
topid 1
name 'truck'

xymply_markers:

id 1
sdate 2012-03-01
hdate 2012-04-01
name 'TEST'
address '1234 TEST'
unit''
lat 49.0
lng -123.0
adtext 'TEST'
phone '1234567890'
email 'email@email.com'
url 'www.url.com'
cat 'bike'

--------------

id 1
sdate 2012-03-01
hdate 2012-04-01
name 'TEST'
address '1234 TEST'
unit''
lat 49.5
lng -123.5
adtext 'TEST'
phone '1234567890'
email 'email@email.com'
url 'www.url.com'
cat 'vehicle'

最佳答案

一个问题是 xymply_markers.cat 字段是 VARCHAR(4) 但 xymply_categories.name 字段是 TEXT,并且包含的​​值超过 4 个字符。要么您没有为我们提供准确的架构,要么您对加入哪些列感到困惑,或者您永远不会看到任何卡车或车辆。加入的列应该具有相同的类型,几乎没有异常(exception)(我从来没有看到一个异常(exception)的充分理由)。

然后您询问 id = 4topid = 4,但您显示的示例数据只有 id = 1topid = 1。您实际上在系统中有 id = 4topid = 4 的数据吗?

在这两种困惑之间,很难知道我们面对的是什么。如果您有连接的数据并具有相关的 topidid 值,那么您的查询应该有效。


I have a field called 'id' in both tables. How can I control which one I'm accessing with PHP after I read data into the array with $row = @mysql_fetch_assoc($result)?

最简单的方法是确保每个结果列都有一个唯一的名称,创建一个带有“别名”的名称,如:

SELECT c.id AS category_id,
c.topid,
c.name AS category_name,
m.id AS marker_id,
m.name AS marker_name,
...

PHP 会将别名与行中的数据相关联。

关于mysql - 协助 MySQL JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9525955/

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