php - 在一次查询中按计数和运算符获取结果

标签 php sql laravel foreach count

我觉得问题不对,但我不知道怎么问才好。

此查询选择所有员工的所有企业,其 job_types 包含 C 字母。

$connect = DB::table('relationship')
->join('workers', 'workers.id', '=', 'relationship.w_id')
->join('business', 'business.id', '=', 'relationship.b_id')
->whereRaw('job_types LIKE "%C%"')
->groupBy('relationship.w_id')
->get();

我正在使用 foreach 来显示结果

foreach ($connect as $item) {
 echo $item->name;
 // etc
}

我想选择所有大于 3 或小于 3 或等于 3 的企业(取决于我需要什么)job_types LIKE "%C%" 并存储这样的信息:

1. APPLE | Tom | C
2. APPLE | Tim | C
3. APPLE | Jeff | C
4. IBM | Jenny | C
5. IBM | Sean | C
6. IBM | Ian | C
// etc``

@KikiTheOne 的回答有点管用,但它没有根据需要显示结果。

最佳答案

*****解决方案*****

SELECT 
 * 
FROM 
    people_details as t1 
inner join 
    people_branches as t2 
on t1.id = t2.id 
    inner join 
    ( 
        SELECT 
            count(t1.id) as worker_counter,t1.branch_id
        FROM 
            people_branches as t1 
                inner join people_details as t2 
                    on t1.id = t2.id 
        WHERE 
            t2.job_types LIKE '%C%' 
            group by branch_id 
    ) as t3 
    on t2.branch_id = t3.branch_id 
inner join people_frontpage as t4 
    on t4.id = t1.id 
inner join business as t5 
    on t5.id = t2.branch_id 
WHERE 
    t1.job_types LIKE '%C%' 
    AND t3.worker_counter > 200

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


旧 - 更新

  1. Table Business
  2. Table Relationship
  3. Table Worker
  4. Output

SELECT 
    t3.bus_name, t1.name, t1.job_types 
FROM 
    SO_WORKER as t1 
    inner join 
        SO_RELATIONSHIP as t2 
            on t1.id = t2.w_id 
    inner join 
    (
        SELECT 
            count(t1.w_id) as worker_counter,t1.b_id,t3.bus_name 
        FROM 
            SO_RELATIONSHIP as t1 
            inner join SO_WORKER as t2 
                on t1.w_id = t2.id 
            inner join SO_BUSINESS as t3 
                on t3.id = t1.b_id 
        WHERE 
            t2.job_types LIKE '%C%' 
            group by b_id
    ) as t3 
    on t2.b_id = t3.b_id 
WHERE t1.job_types LIKE '%C%'
AND t3.worker_counter <= 3

未格式化

SELECT t3.bus_name, t1.name, t1.job_types FROM SO_WORKER as t1 inner join SO_RELATIONSHIP as t2 on t1.id = t2.w_id inner join (SELECT count(t1.w_id) as worker_counter,t1.b_id,t3.bus_name FROM SO_RELATIONSHIP as t1 inner join SO_WORKER as t2 on t1.w_id = t2.id inner join SO_BUSINESS as t3 on t3.id = t1.b_id WHERE t2.job_types LIKE '%C%' group by b_id) as t3 on t2.b_id = t3.b_id WHERE t1.job_types LIKE '%C%' AND t3.worker_counter <= 3

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

旧代码

关于帖子 1 的评论

Table: SO_BUSINESS
    id      |       bus_name
    --------------------
    1       |       BUSI A
    2       |       BUSI B

Table: SO_WORKER
    id      |       job_types
    ---------------------
    1       |       CEO
    2       |       GFO
    3       |       CTO
    4       |       Manager
    5       |       Worker

Table: SO_RELATIONSHIP
    w_id    |       b_id
    ----------------
    1       |       1
    2       |       2
    3       |       1
    4       |       1
    5       |       2

Query: Output
    workers_count   |       b_id        |       bus_name
    --------------------------------------------
    2               |       1           |       BUSI A

.

SELECT * 
FROM 
    (
        SELECT 
            count(t1.w_id) as workers_count,
            t1.b_id,
            t3.bus_name
        FROM 
            SO_RELATIONSHIP as t1 
            inner join 
                SO_WORKER as t2 on t1.w_id = t2.id 
            inner join 
                SO_BUSINESS as t3 on t1.b_id = t3.id 
        WHERE 
            t2.job_types LIKE '%C%' 
        GROUP BY t1.b_id
    ) as t4 
WHERE 
    t4.workers_count < 3  

未格式化的代码:

SELECT * FROM (SELECT count(t1.w_id) as workers_count,t1.b_id,t3.bus_name FROM SO_RELATIONSHIP as t1 inner join SO_WORKER as t2 on t1.w_id = t2.id inner join SO_BUSINESS as t3 on t1.b_id = t3.id WHERE t2.job_types LIKE '%C%' GROUP BY t1.b_id) as t4 WHERE t4.workers_count < 3  

如果这对你有帮助,请告诉我

关于php - 在一次查询中按计数和运算符获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39998817/

相关文章:

javascript - 我可以根据点击 li className 在一个 php 页面中显示单独的数据表吗?

php - 将 jquery 字符串转换为 php

sql - 针对多个数据库系统测试 SQL 查询

php - 资源 Controller 上的 Laravel 路由。使用带有 id = create 的 Show 方法而不是 create 方法

php - 图片加载失败,net::ERR_CONTENT_LENGTH_MISMATCH

php - 将成员(member)加入日期/成员(member)成长数据组织成可图形化的 block

mysql - 如何在订购前添加数字到时间(MySQL)

php - WHERE 子句中的 MAX()

php - 使用 laravel 和 jquery 分页无法按预期工作

Laravel JSON 字段如果不存在则无法更新或 updateOrCreate