Php 如何使用多个表从数据库中获取数据?

Php 如何使用多个表从数据库中获取数据?,php,mysql,Php,Mysql,大家好 我无法正确地从数据库中获取结果。我有很多桌子,但现在这并不重要。我有一张这样的桌子: ***PUBLISHER_DEVELOPER table*** pd_id : [int] AUTO PRIMARY pd_name: [varchar] pd_type: [integer] (0,1 or 2) ***GAME_INFO table*** g_id: [int] AUTO PRIMARY g_label: [varchar] g_publisher: [integer] g_dev

大家好

我无法正确地从数据库中获取结果。我有很多桌子,但现在这并不重要。我有一张这样的桌子:

***PUBLISHER_DEVELOPER table***
pd_id : [int] AUTO PRIMARY
pd_name: [varchar]
pd_type: [integer] (0,1 or 2)

***GAME_INFO table***
g_id: [int] AUTO PRIMARY
g_label: [varchar]
g_publisher: [integer]
g_developer: [integer]
表中的连接如下所示:

发布者\开发者:游戏\信息=1:LOT

我想获得游戏信息与出版商和开发商的正常名称,但我总是得到零行返回

我的SQL查询:

*SELECT pd_name, pd_name, g_label FROM PUBLISHER_DEVELOPER,GAME_INFO WHERE pd_id = g_publisher AND pd_id = g_developer*

知道我做错了什么吗?

可能出版商和开发者不同。第一个表与g_发布者或g_开发者之间应该存在关系

SELECT pd_name, pd_name, g_label FROM PUBLISHER_DEVELOPER INNER JOIN GAME_INFO ON pd_id = g_publisher

SELECT pd_name, pd_name, g_label FROM PUBLISHER_DEVELOPER INNER JOIN GAME_INFO ON pd_id = g_developer
SELECT p.pd_name AS p_name, d.pd_name AS d_name, g_label
FROM GAME_INFO
JOIN PUBLISHER_DEVELOPER p ON p.pd_id = g_publisher
JOIN PUBLISHER_DEVELOPER d ON d.pd_id = g_developer


可能发布者和开发者是不同的。第一个表与g_发布者或g_开发者之间应该存在关系

SELECT pd_name, pd_name, g_label FROM PUBLISHER_DEVELOPER INNER JOIN GAME_INFO ON pd_id = g_publisher

SELECT pd_name, pd_name, g_label FROM PUBLISHER_DEVELOPER INNER JOIN GAME_INFO ON pd_id = g_developer
SELECT p.pd_name AS p_name, d.pd_name AS d_name, g_label
FROM GAME_INFO
JOIN PUBLISHER_DEVELOPER p ON p.pd_id = g_publisher
JOIN PUBLISHER_DEVELOPER d ON d.pd_id = g_developer


如果g_publisher和g_developer都引用publisher_developer.pd_id,则可以两次加入表

  SELECT pd_1.pd_name, pd_2.pd_name, gi.g_label FROM PUBLISHER_DEVELOPER pd_1, PUBLISHER_DEVELOPER pd_2, GAME_INFO gi WHERE pd_1.pd_id = gi.g_publisher AND pd_1.pd_id = gi.g_developer;

如果g_publisher和g_developer都引用publisher_developer.pd_id,则可以两次加入表

  SELECT pd_1.pd_name, pd_2.pd_name, gi.g_label FROM PUBLISHER_DEVELOPER pd_1, PUBLISHER_DEVELOPER pd_2, GAME_INFO gi WHERE pd_1.pd_id = gi.g_publisher AND pd_1.pd_id = gi.g_developer;

假设您需要两个到
PUBLISHER\u DEVELOPER
表的联接,以同时返回发布者和开发人员

SELECT pd_name, pd_name, g_label FROM PUBLISHER_DEVELOPER INNER JOIN GAME_INFO ON pd_id = g_publisher

SELECT pd_name, pd_name, g_label FROM PUBLISHER_DEVELOPER INNER JOIN GAME_INFO ON pd_id = g_developer
SELECT p.pd_name AS p_name, d.pd_name AS d_name, g_label
FROM GAME_INFO
JOIN PUBLISHER_DEVELOPER p ON p.pd_id = g_publisher
JOIN PUBLISHER_DEVELOPER d ON d.pd_id = g_developer

对于注释中的查询,类似的重写将如下所示

SELECT f.fk_nev, k.fk_nev, k_nev, j_cim, j_megjelent, j_megjelenes, 
  j_cover, a_becenev, b_head, b_ci?m, b_cimke, b_lead, b_tartalom, 
  b_komment, b_datum, b_burl
FROM jatek_info ji
JOIN fejleszt_kiad f ON f.fk_id = ji.j_fejleszt  
JOIN fejleszt_kiad k ON k.fk_id = ji.j_kiad
JOIN jatek j ON j.j_jatek_info = ji.j_id  
JOIN blog b ON b.b_jatek = j.j_id
JOIN admin a ON a.a_id = b.b_szerzo
我在一定程度上猜测您的表是如何链接的,但我认为这应该是正确的


请注意,其中一个字段名中有一个
,我假设该字段名是非ASCII字符,当您将查询剪切并粘贴到注释中时,该字符已损坏。如果要剪切并粘贴我的代码,请确保修复此问题。

假设您需要两个到
PUBLISHER\u DEVELOPER
表的联接,以同时获取发布者和开发人员

SELECT pd_name, pd_name, g_label FROM PUBLISHER_DEVELOPER INNER JOIN GAME_INFO ON pd_id = g_publisher

SELECT pd_name, pd_name, g_label FROM PUBLISHER_DEVELOPER INNER JOIN GAME_INFO ON pd_id = g_developer
SELECT p.pd_name AS p_name, d.pd_name AS d_name, g_label
FROM GAME_INFO
JOIN PUBLISHER_DEVELOPER p ON p.pd_id = g_publisher
JOIN PUBLISHER_DEVELOPER d ON d.pd_id = g_developer

对于注释中的查询,类似的重写将如下所示

SELECT f.fk_nev, k.fk_nev, k_nev, j_cim, j_megjelent, j_megjelenes, 
  j_cover, a_becenev, b_head, b_ci?m, b_cimke, b_lead, b_tartalom, 
  b_komment, b_datum, b_burl
FROM jatek_info ji
JOIN fejleszt_kiad f ON f.fk_id = ji.j_fejleszt  
JOIN fejleszt_kiad k ON k.fk_id = ji.j_kiad
JOIN jatek j ON j.j_jatek_info = ji.j_id  
JOIN blog b ON b.b_jatek = j.j_id
JOIN admin a ON a.a_id = b.b_szerzo
我在一定程度上猜测您的表是如何链接的,但我认为这应该是正确的


请注意,其中一个字段名中有一个
,我假设该字段名是非ASCII字符,当您将查询剪切并粘贴到注释中时,该字符已损坏。如果您正在剪切和粘贴我的代码,请务必修复此问题。

这些表(外键)之间没有关系。您如何期望数据返回?查看执行
连接
-这些表(外键)之间没有关系。您如何期望数据返回?查看执行
连接
-对不起,我的英语不好。这是我桌子上的一张照片。对不起我的英语。这是我桌子上的一张照片。非常感谢你,穆奇!这就是我想要的!可以像上面那样修改此代码吗?选择fk_nev,fk_nev,k_nev,j_cim,j_megjelent,j_megjelenes,j_cover,a_becenev,b_head,b_cim,b_cimke,b_lead,b_tartalom,b_komment,b_datum,b_burl,来自kiad,kategoria,jatek_信息,jatek,admin,博客,其中fejleszt_kiad.fk_id=jatek_info.j_fejleszt和fejleszt_kiad.fk_id=jatek_info.j_kiad和jatek_info.j_id=jatek.j_jatek_info和admin.a_id=blog.b_szerzo和jatek.j_id=blog.b_jatekI已经更新了我的答案,以显示如何修改该查询。非常感谢!我改了,这是正确的!谢谢你帮了我大忙,老兄!选择f.fk_nev、k.fk_nev、k_nev、k_cim、j_megjelent、j_megjelenes、j_cover、a_becenev、b_head、b_cim、b_cimke、b_lead、b_tartalom、b_komment、b_datum、b_burl(来自kategoria),在f.fk上加入fejleszt\u kiad f在f.fk上加入fejleszt\u kiad k在k.fk上加入fejleszt\u kiad=ji.j\u kiad在j.j上加入jatek j在j.j上加入jatek\u info=ji.j\u在b.b上加入blog b在a.a\u id=b.b\u Szerzo上加入管理员a非常感谢!这就是我想要的!可以像上面那样修改此代码吗?选择fk_nev,fk_nev,k_nev,j_cim,j_megjelent,j_megjelenes,j_cover,a_becenev,b_head,b_cim,b_cimke,b_lead,b_tartalom,b_komment,b_datum,b_burl,来自kiad,kategoria,jatek_信息,jatek,admin,博客,其中fejleszt_kiad.fk_id=jatek_info.j_fejleszt和fejleszt_kiad.fk_id=jatek_info.j_kiad和jatek_info.j_id=jatek.j_jatek_info和admin.a_id=blog.b_szerzo和jatek.j_id=blog.b_jatekI已经更新了我的答案,以显示如何修改该查询。非常感谢!我改了,这是正确的!谢谢你帮了我大忙,老兄!选择f.fk_nev、k.fk_nev、k_nev、k_cim、j_megjelent、j_megjelenes、j_cover、a_becenev、b_head、b_cim、b_cimke、b_lead、b_tartalom、b_komment、b_datum、b_burl(来自kategoria),jatek_info ji JOIN fejleszt_kiad f ON f.fk_id=ji.j_fejleszt JOIN fejleszt_kiad k ON k.fk_id=ji.j_kiad JOIN jatek j ON j.j_info=ji.j_id JOIN blog b ON b.b_jatek=j.j_id JOIN admin a ON a.a_id=b.bèszerzo