简体   繁体   English

如何将其编写为SQL查询

[英]How to write this as an SQL Query

I have a code that is written in php and its a query, but i want to convert in into sql query 我有一个用php写的代码及其查询,但是我想转换成sql查询

return TimetableEntry::select('timetable_entries.id as tid')

    ->addSelect('timetable_entries.id as tid')

    ->join('weekdays', 'timetable_entries.weekday_id', '=', 'weekdays.id')

    ->addSelect('weekdays.weekday as tweek')

    ->join('employees', 'timetable_entries.employee_id', '=', 'employees.id')

    ->addSelect('employees.id as eid')

    ->join('users', 'users.username', '=', 'employees.employee_number')

    ->join('timetables', 'timetables.id', '=', timetable_entries.timetable_id')

    ->addSelect('timetables.start_date as tstart')

    ->addSelect('timetables.end_date as tend')

    ->join('class_timings', 'class_timings.id', '=','timetable_entries.class_timing_id')

    ->addSelect('class_timings.start_time as start')

    ->where('users.id','=',$this->id)

    ->get();

Query can Looks Like 查询看起来像

select timetable_entries.id as tid ,
weekdays.weekday as tweek,
employees.id as eid,
timetables.start_date as tstart,
timetables.end_date as tend,
class_timings.start_time as start

From timetable_entries
join weekdays
ON
timetable_entries.weekday_id=weekdays.id

join employees
ON 
timetable_entries.employee_id=employees.id

join users
ON users.username=employees.employee_number

join timetables
ON timetables.id=timetable_entries.timetable_id

join class_timings
ON class_timings.id=timetable_entries.class_timing_id

where users.id=timetable_entries.id

This should get you started: unoptimized, obviously. 这应该使您入门:显然,未优化。

SELECT
    timetable_entries.id AS tid,
    weekdays.weekday AS tweek,
    employees.id AS eid
    timetables.start_date as tstart
    timetables.end_date as tend
    class_timings.start_time as start
FROM
    timetable_entries,
    weekdays,
    employees,
    timetables,
    class_timings
WHERE
    timetable_entries.weekday_id = weekdays.id,
    timetable_entries.employee_id = employees.id,
    users.username = employees.employee_number,
    timetables.id = timetable_entries.timetable_id,
    class_timings.id = timetable_entries.class_timing_id,
    users.id = <PUT_ID_HERE>

Rewriting a query like this is not too complex, as long as you follow the order of the SELECT syntax 只要遵循SELECT语法的顺序,这样重写查询就不会太复杂

-- First just add all select/addselects

SELECT timetable_entries.id as tid,
       weekdays.weekday as tweek,
       employees.id as eid,  
       timetables.start_date as tstart,
       timetables.end_date as tend,
       class_timings.start_time as start

-- then add all the JOINs

FROM timetable_entries
JOIN weekdays ON timetable_entries.weekday_id = weekdays.id
JOIN employees ON timetable_entries.employee_id = employees.id
JOIN users ON users.username = employees.employee_number
JOIN timetables ON timetables.id = timetable_entries.timetable_id
JOIN class_timings ON class_timings.id = timetable_entries.class_timing_id

-- last, add the WHERE

WHERE users.id = $this->id

your code is following as : 您的代码如下:

SELECT(
    timetable_entries.id AS tid,
    timetables.start_date AS tstart,
    weekdays.weekday AS tweek,
    timetables.end_date AS tend,
    employees.id AS eid,
    class_timings.start_time AS START

    FROM
    timetable_entries
    JOIN weekdays timetable_entries.weekday_id=weekdays.id
    JOIN employees timetable_entries.employee_id=employees.id
    JOIN users users.username=employees.employee_number
    JOIN timetables timetables.id=timetable_entries.timetable_id
    JOIN class_timings class_timings.id=timetable_entries.class_timing_id
    WHERE users.id=?(id);

Note: ? 注意: ? mark should be using to front end for input... 标记应用于前端输入...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM