【问题标题】:trying to pull from multiple tables and displaying the different information尝试从多个表中提取并显示不同的信息
【发布时间】:2013-03-21 18:02:03
【问题描述】:

所以我这几天一直在搜索和反复试验,我向这里寻求帮助。

我在我的网站上创建了一个页面,该页面从数据库的表格中提取日程信息并将其显示到网页上。我试图从同一个数据库中的第二个表中提取配色方案,当第一个表上的名称与第二个表上的名称匹配时,只有该名称将以分配给它的不同颜色显示。我的表如下所示:

TBL1:
id time timeframe 周一 周二 周三 周四 周五 周六 周日
1 12a 00:00:00 名称1 名称2 名称3 名称2 名称5 名称6 名称7
2 1a 01:00:00 名称1 名称2 名称3 名称2 名称5 名称4 名称3
3 2a 02:00:00 名称1 名称2 名称4 名称2 名称2 名称6 名称2
4 3a 03:00:00 Name2 Name2 Name4 Name2 Name3 Name3 Name2

TBL2:
id 名称 颜色
1 名称1 #hexcolor
2 名称2 #hexcolor2
3 名称3 #hexcolor3
等

    $query = array('select' => "*", 
               'tbl' => "Schedule");
$query2 = array('select' => "name, color", 
               'tbl' => "dj_colors");

$name = "select t1.*, Monday.color, Tuesday.color, Wednesday.color, Thursday.color, Friday.color, Saturday.color, Sunday.color

从时间表 t1 加入 dj_colors 星期一 ON t1.Monday = Monday.name, 周二加入 dj_colors ON t1.Tuesday = Tuesday.name, 加入 dj_colors 星期三 ON t1.Wednesday = 周三名称, 周四加入 dj_colors ON t1.Thursday = Thursday.name, 周五加入 dj_colors ON t1.Friday = Friday.name, 周六加入 dj_colors ON t1.Saturday = 周六名称, 周日加入 dj_colors ON t1.Sunday = Sunday.name";

$DB = new DB(); $result = $DB->select_multi($query); foreach ($result as $arrayLoop) { $printout .= "<tr>"; foreach ($arrayLoop as $field => $data) { if ($field == 'id' || $field == 'TimeFrame') continue; if ($data === $name) $printout .= "<td color=".$color.">".$data."</td>"; else $printout .= "<td class='schedule4'>".$data."</td>"; } $printout .= "</tr>"; }

编辑*这是我想出并尝试的,但我认为我仍然缺少一些东西,因为它仍然没有像我想要的那样工作。我走了头,并以正确的格式给出了我正在使用的实际表的名称。仍然没有拉颜色,但我没有收到任何错误。请多多包涵,我还在学习中。我不是在问答案,只是在哪里寻找和一些有用的提示。

【问题讨论】:

  • 为什么不在一个结果连接表中获取数据?

标签: php mysql join multiple-tables


【解决方案1】:

我认为您需要了解联接。您可以在与名称相同的查询中返回颜色,方法是将它们加入:

select t1.*, mon.color, tue.color, . . . sun.color
from table1 t1 join
     table2 mon
     on t1.name = mon.name join
     tale2 tue
     on t1.tue = tue.name
     . . .
     table2 sun
     on t1.sun = sun.name 

表达式:

SELECT color FROM tbl2 WHERE name

可能不会返回任何行。在没有比较的情况下,name 将根据前面的初始数字转换为 int。如果它以字母字符开头,则将其转换为 0,即为 false,因此不返回任何行。

【讨论】:

  • 我告诉过你这可能是一些基本的东西。我在编写代码的同时自学php。关闭学习连接功能。非常感谢。
  • @乍得。 . .我在您修改后的问题中没有看到 from 子句。
  • 我修复了显示所有代码的格式,昨天我在编辑我的帖子时没有注意。
  • @乍得。 . .我想你想给不同的颜色起不同的别名:Monday.color as MondayColor, Tuesday.color as TuesdayColor, . . . 。 MySQL 喜欢列有不同的名称。
  • 日子不应该是彩色的,只有工作人员的名字。就像,我有一个工作人员在周一 1a-3a 和周四 4p-7p 工作。我希望他的名字以特定的颜色显示,无论他实际在日程表中的哪个位置。
猜你喜欢
  • 2018-11-19
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多