cqllang 2009-05-19 22:50
浏览 224
已采纳

防止频道重复定制问题

最近做一个项目中.涉及到一个频道的定制问题.描述如下.

多个用户可以定制多个频道.但不能重复定制.
我的构想是如果用户已定制了该频道后.就不在在当前用户浏览的订制频道页面显示出来.这样可防重复定制.

一共三张表.user表.channel表 user_channel表

查询浏览频道时:
用以下sql:

[code="java"]select a.* from channel as a left join user_channel as b on (a.id = b.channelid) where b.id is null or b.userId <> 22[/code]
注:22为用户登录ID

这个语句发现一个问题.查询出来数据有重复.比如channelid为35的频道 未被22的用户定制.但被23.24两个用户定制了.这样的话,发现查出来的数据有两条.用了distinct去重.发现这个不好用.不能查出channel所有纪录如distinct(*),只能查出一列distinct(name)等.

同时想把这个sql转换成hql或是Criteria查询方式 .发现不支持on

关于这个同一频道不希望被一个用户重复定制的问题,谁有好的成功解决方案,期待分享.有较好可行的思路也行.谢谢.

[b]问题补充:[/b]
SQL正解。比我后来测试的简练多了。。

但因为项目用到了SSH框架,所以里面要放HQL且分页。

涉及其它方面的问题。

想问一下

同一频道不希望被一个用户重复定制的问题

有没有其它什么更好的解决方案?

谢谢

  • 写回答

6条回答 默认 最新

  • chengxing6666 2009-05-22 09:22
    关注

    可以将所有频道的信息放到全局变量中(按我的理解,信息应是不很多,最多几百条而已,完全可以用全局变量,减少查询的做法,对性能比较好),你做查询时只需查出已有订制的频道,然后在程序里过滤就是这些频道就是了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 关于#cesium#的问题:cesium 根据经纬度、高度、方位角、俯仰角和距离求另一点高度
  • ¥15 word脚注设置不起空格符号
  • ¥15 为什么apriori的运行时间会比fp growth的运行时间短呢
  • ¥15 求解密json或者美化
  • ¥15 帮我解决一下膳食平衡的线性规划模型的数据实例
  • ¥40 万年历缺少农历,需要和阳历同时显示
  • ¥250 雷电模拟器内存穿透、寻基址和特征码的教学
  • ¥200 比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
  • ¥15 关于Java的学习问题
  • ¥15 如何使用chatgpt完成文本分类任务?