2012-04-24 5 views
0

Я новичок в PHP, но в процессе создания довольно сложной базы данных опыта работы. В настоящее время существуют две таблицы (работодатели, студенты) Теперь, я использовал:База данных с несколькими запросами

"SELECT * FROM employers ORDER BY Category, SubCategory, Name" 

, чтобы сгенерировать список работодателей и их деталей. Тем не менее, в этом списке мне нужно показать, с какими учениками работают работодатели в течение трех недель. Мне нужно вернуть значение «FirstName» из «учеников», если «WeekOne» (также столбец «учеников») = «Имя» (от «работодателей»)

Пожалуйста, помогите! Если это слишком искаженное, дайте мне знать - это довольно сложно объяснить.

По сути, я хочу, чтобы создать список, который выглядит немного как это:

Компания One, Адрес, Первая неделя - Студенческая, Неделя вторая - студент, Неделя Три - студент

компании Two , Адрес, Первая неделя - студент, Неделя вторая - студент, Неделя третья - студент и т.д.

+0

Вы можете разместить столбцы, доступные в каждой таблице? То, что я предлагаю сделать, - это выбрать из таблицы «учеников» и присоединиться к необходимым данным из таблицы работодателей. – Steven

+0

@Steven Проделали :) –

+0

@Steven Я хочу, чтобы добраться до каждого работодателя с его деталями, и какой студент есть. Как это: Работодателя, Адреса, Недели Один - студент, Недели Два - студент, Недели Три - Student –

ответ

0

Хотя было бы хорошо, что вы показать нам свой SQL-таблицы, вот моя идея о том, как вы будете делать Это.

SELECT e.*, s.FirstName FROM employers AS e, students AS s 
WHERE s.WeekOne = e.Name 
OR s.WeekTwo = e.Name 
OR s.WeekThree = e.Name 
// etc 
ORDER BY Category, SubCategory, Name 

Если вы правильно поняли, это поможет вам получить нужные данные.

+0

Рода ... Что мне нужно, чтобы добраться до это создать полный список работодателей, который дает мне следующее информация для каждого работодателя: (имя работодателя) (адрес) (неделя 1 = студент) (неделя 2 = студент) (неделя 3 = студент) –

+0

Затем вы просто добавляете «OR s.WeekTwo = e.Name» и т. д. после того, как , перед ORDER BY. Я отредактировал свой ответ, чтобы показать, как это будет сделано. –

0

Как я понимаю, вы хотите получить работодателей с их деталями. Вы можете использовать такой запрос, используя операцию соединения;

SELECT e.*, s.FirstName FROM students AS s 
RIGHT JOIN employers AS e 
ON s.WeekOne=e.Name 
ORDER BY Category, SubCategory, Name 
+0

Сортировка ... Что мне нужно, чтобы создать полный список работодателей, который дает мне следующую информацию для каждого работодателя: (имя работодателя) (адрес) (неделя 1 = студент) (неделя 2 = студент) (неделя 3 = Студент) –

+0

Не могли бы вы также предоставить структуру db? –

+0

Для обеих таблиц? Как мне это сделать? Сожалею. Благодарю. –

0

SQL, ниже будет возвращать ПгвЬЫат студента и имя работодателя, если столбец таблицы студентов weekone равен «Имени» в таблице работодателей.

SELECT students.FirstName, Employers.Name 
FROM students 
JOIN employers ON students.WeekOne = Employers.Name 

Я вижу, вы хотите: работодателя, адрес, неделя один - студент, Неделя вторая - студент, Неделя третья - студент.

Попробуйте что-то вроде этого:

SELECT e.name, e.address, student1.firstname AS 'Week One', student2.firstname AS 'Week Two', student3.firstname AS 'Week Three' 
FROM employers AS e 
JOIN students AS student1 ON e.name = student1.weekone 
JOIN students AS student2 ON e.name = student2.weektwo 
JOIN students AS student3 ON e.name = student3.weekthree 
ORDER BY category, subcategory, e.name 
+0

, отредактированный - это поможет? –

+0

Спасибо за вашу помощь. Терри - что вы подразумеваете под «Student 1» и т. Д.? Стол учеников - это база данных студентов с большим количеством индивидуальной информации, включая колонки «Неделя 1», «Вторая неделя», «Неделя 3», в которой указывается, в какой компании они находятся в соответствующие недели. –

+0

Я добавил к своему оригинальному сообщению, чтобы попытаться проиллюстрировать это более четко ... –

Смежные вопросы