Apache не работает на xampp (хампе)

Опубликовано: 15.06.2017

видео apache не работает на xampp (хампе)

Не работает Denwer, не грузит страницу

Для рассмотрения примеров будут применены три таблицы, тематически связанные с обучением:

Таблица `students`, содержит индивидуальную информацию студентов



 

Таблица `subjects`, наименования предметов

 Таблица `students_mark`, оценки студентов

 

Это простой запрос, обхватывающий только одну таблицу:

Запрос всех имеющихся столбцов в таблице `students`

SELECT * FROM `students`

Тот же запрос, очевидно указывающий столбцы для вывода


3.4 Возможные ошибки FTP-клиента и способы их решения

SELECT `id`,`firstname`,`lastname` FROM `students`

 

Полным считается объединение, в каком задействовано более одной таблицы. При таком объединении строчки из одной таблицы сопоставляются со строчками из другой, создавая подмножество строк со различными комбинациями.

При построении запроса в разделе FROM нужно перечислить таблицы участвующие в объединении. К примеру, в нижеследующем примере, строчки таблиц `students` и `students_mark` соединяются воединыжды, образуя различные композиции.

SELECT * FROM `students`,`students_mark`

Как видно из рисунка такое объединение делает огромное количество строк. Формула объединения такая:

“Количество строк 1 таблицы” * “Количество строк 2 таблицы” * … * “Количество строк N таблицы”

Из чего следует, что в текущем запросе скомбинировано 7*4=28 строк

 

Для указания условия объединения можно пользоваться оператором WHERE. При составлении условия нужно указывать полный путь до участвующего в сопоставлении столбца: `заглавие таблицы`.`заглавие столбца`.

SELECT * FROM `students`,`students_mark` WHERE `students`.`id`=`students_mark`.`idstudent`

В итоге запроса получены все студенты, у каких есть оценки, студент Александр Александров исключается из перечня, т.к. не имеет оценок.

Команда SELECT * выводит все имеющиеся столбцы в объединенных таблицах. Это не всегда комфортно, например, в текущем запросе уже есть совпадения имен (столбец id), некие столбцы вообщем не необходимы при выводе (idstudents, т.к. idstudents=id). Потому для вывода нужных столбцов их необходимо указать в операторе SELECT, к тому же есть возможность задать псевдоним для каждого столбца, после команды AS:

Перепишем запрос, беря во внимание полученную информацию:

SELECT `students`.`id` AS idstudent, `students`.`firstname` AS name, `students`.`lastname` AS surname, `students_mark`.`id` AS idmark, `students_mark`.`idsubject` AS idsubject, `students_mark`.`mark` AS mark FROM `students`,`students_mark` WHERE `students`.`id`=`students_mark`.`idstudent`

 

В последнем примере в итоге запроса были получены студенты, у каких есть оценки. А что если нужно вывести всех студентов, не зависимо, есть у их оценка либо нет. Для решения данной задачки идеальнее всего пользоваться левосторонним объединением.

Левое объединение действует, так же как и полное, но оно еще включает данные одной из таблиц, которые не совпадают с аспектом подборки.

Для сотворения левого объединения употребляется оператор LEFT JOIN, он размещается заместо запятой разделяющей таблицы в операторе FROM, для задания условия употребляется оператор ON, аналог оператора WHERE.

Итак, сделаем запрос для вывода всех студентов, независимо есть ли у их оценка либо нет:

SELECT `students`.`id` AS idstudent, `students`.`firstname` AS name, `students`.`lastname` AS surname, `students_mark`.`id` AS idmark, `students_mark`.`idsubject` AS idsubject, `students_mark`.`mark` AS mark FROM `students` LEFT JOIN `students_mark` ON `students`.`id`=`students_mark`.`idstudent`

В данном объединении выбираются поначалу все строчки левой таблицы `students`, потом на основании условия ON им сопоставляются строчки из таблицы `students_mark` создавая огромное количество объединений. Для тех строк из левой таблицы`students`, где соответствия не были найдены, в столбцах инсталлируются значения NULL.

Используя оператор WHERE, можно внести дополнительные условия в запрос. Например, для получения студентов не имеющий оценок можно поменять запрос последующим образом:

SELECT `students`.`id` AS idstudent, `students`.`firstname` AS name, `students`.`lastname` AS surname FROM `students` LEFT JOIN `students_mark` ON `students`.`id`=`students_mark`.`idstudent` WHERE `students_mark`.`idstudent` IS NULL

 

СУБД MYSQL позволяет создавать сложные запросы, используя несколько вложенных операторов SELECT, которые заключаются в круглые скобки. В таких запросах сначала производятся вложенные подборки, потом на базе приобретенных результатов наружные.