【问题标题】:Question about joining two mysql tables关于连接两个mysql表的问题
【发布时间】:2010-10-24 08:34:10
【问题描述】:

我正在尝试加入两个表;目的是能够搜索和显示用户输入的艺术家的事件信息。

表格如下:

艺术家表: [id],[姓名]

事件表: [id],[artist_id],[venue_name],[city],[state],[date],[time]

我创建了一个搜索引擎,但我想做的是当在文本框中输入艺术家姓名时,代码将转到我的数据库并查看艺术家表以查看输入的名称,然后获取与输入名称匹配的 id,然后转到 events 表以找到该不同的艺术家 ID,并显示输入的特定艺术家的所有事件信息。

我真的很想帮助我如何做到这一点,我不是最擅长的,但我正在努力!谢谢:)

【问题讨论】:

    标签: php mysql database join search-engine


    【解决方案1】:
    SELECT *
    FROM artist
        LEFT JOIN events
            ON artist.id = events.artist_id
    WHERE artist.name = 'your search text'
    

    【讨论】:

    • 不要为我自己的答案难过...但是假设一个相当规范化的数据库,这将返回比严格必要的更多的数据。尽管如此,+1 表示结构合理。此外,请注意“您的搜索文本”位上的输入验证。 SQL 注入等待在那里发生。
    • @Adrien,您可能是对的,但我认为他们还希望艺术家详细信息显示在 UI 或其他内容中,因此使用“SELECT *”和“LEFT JOIN”。
    • @Luke:同意,因此得到了我的支持。我不时被指责“过度分析”问题(尤其是家庭作业问题)。 :)
    【解决方案2】:
    select e.venue_name, e.city, e.state, e.date, e.time
    from artist_table a
      join events_table e
        on a.id = e.artist_id
    where a.name = @userInput
    

    或类似的东西......还是我错过了什么?这是一道作业题吗?

    【讨论】:

      【解决方案3】:
      select a.name, e.* 
      from artist as a
          left join events on(a.id - e.artist_id)
              where a.name like '%$someinput%'

      以防万一您不想找到完全匹配的名称。

      只是想帮忙。它肯定我不擅长这个 ,但想帮忙,因为一开始对我来说也很复杂

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-27
        • 2011-04-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多