|
На страницу « 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 » |
|
|
|
|
Возраст: 38 C нами с 25.01.2005 Репутация: 133
|
|
Язык программирования, разработанный специально для динамической генерации веб-страниц. Намного превосходит возможности SSI. Имеет функции работы с базами данных (MySQL), создания графических файлов Jpeg и PNG (библиотека GD), обработки XML-документов и многие другие.
|
|
|
|
|
|
|
|
C нами с 02.03.2007 Репутация: 108
|
|
......
FROM `users` users
inner join `sales` AS sales on sales.u_id = users.u_id
WHERE sales.u_id =2 AND sales.ctock >=750
Не получается, т.к. присоединяемым таблицам стоило бы задать имена
|
Последний раз редактировалось: veloadmin (24 Июн 2009, 20:15), всего редактировалось 2 раз(а)
|
|
|
|
|
|
|
Возраст: 45 C нами с 27.03.2005 Репутация: 205.2
|
|
Павлин, "inner join"? Страшные слова какие.
Цитата: |
WHERE sales.u_id ='2' и чтоб еще и тут же sales.ctock >='750'
|
На языке SQL фраза "и чтоб еще и тут же" выражается оператором AND. Только уберите там кавычки от чисел (2 и 750), ибо это числа, а не строки (и типы полей соответствующих, конечно, должны быть числовыми).
|
_____________________________ Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.05.2009 Репутация: 5.6
|
|
Олег, Я и пишу так SELECT sales.klient, sales.stock, sales.number, sales.rest, sales.s_date, sales.t_name, sales.t_ypakovka, sales.u_id, users.u_id FROM `users`
inner join `sales` on sales.u_id = users.u_id WHERE sales.u_id =1 and sales.ctock >=750 А отвечает
Цитата: |
#1054 - Unknown column 'sales.ctock' in 'where clause'
|
|
_____________________________ Прошу не тыкать в мануал его и так предостаточно!!!
|
|
|
|
|
|
|
C нами с 02.03.2007 Репутация: 108
|
|
Павлин,См. что я выше написал. Ошибка означает что не может найтись такое...
Т.к. к полю ctock указан идентификатор sales, а он не определен ни для одной таблицы
|
|
|
|
|
|
|
|
Возраст: 45 C нами с 27.03.2005 Репутация: 205.2
|
|
Павлин, так что же тут поделаешь, если у Вас в таблице `sales` нет поля `ctock`?
Добавлено спустя 2 минуты 45 секунд:
veloadmin, не путайте человека. Алиасы заводить вовсе не обязательно. (Хотя и стоило бы для сокращения записи, может быть.)
|
_____________________________ Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.05.2009 Репутация: 5.6
|
|
Олег, тысяча извинений спасибо я очепятку допустил не ctock а stock
Добавлено спустя 12 минут 52 секунды:
Олег,
Цитата: |
Павлин, "inner join"? Страшные слова какие.
|
а что вас так удивило я учусь по вашему совету с простых примеров, а можно как ещё заменить?
Добавлено спустя 8 минут 19 секунд:
veloadmin, спасибо, а как делать с помощью алиаса можете примерчик подать не сложный
|
_____________________________ Прошу не тыкать в мануал его и так предостаточно!!!
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.05.2009 Репутация: 5.6
|
|
Олег, здравствуйте, как в php делать форматирование таблиц printf("<tr><td colspan="2">%s</td>\n", $row["u_name"]); не получается пишет
Цитата: |
Parse error: syntax error, unexpected T_LNUMBER in Z:\home\test1.ru\www\index4.php on line 119
|
|
_____________________________ Прошу не тыкать в мануал его и так предостаточно!!!
|
|
|
|
|
|
|
Возраст: 45 C нами с 27.03.2005 Репутация: 205.2
|
|
Павлин,
во-первых, у Вас в строковой константе, заключённой в кавычки, присутствуют кавычки, что не есть хорошо. Надо их либо экранировать: "<tr><td colspan=\"2\">%s</td>\n" — либо заменить на одиночные: "<tr><td colspan='2'>%s</td>\n".
Во-вторых, если Вы не собираетесь пользоваться "продвинутыми" средствами форматирования функции printf, то намного удобнее пользоваться echo и включать переменные прямо в строковую константу:
echo "<tr><td colspan='2'>$row[u_name]</td>\n"; |
Цитата: |
а что вас так удивило
|
Почему-то никогда не сталкивался с "inner join" и даже толком не пойму, в чём его особенность по сравнению с обычным "join". Насколько я понимаю (могу ошибаться), обычный "join" эквивалентен перечислению таблиц через запятую (с указанием условия связывания). Ещё бывает полезен "left join", отличающийся тем, что если в левой таблице есть строки, не соответствующие ни одной строке правой таблицы, то они будут добавлены в результат, а соответствующие поля правой таблицы будут заменены на null. Ну т.е. пусть есть две таблицы:
Цитата: |
Таблица `Color`:
`cid`, `color`
1, 'red'
2, 'green'
3, 'blue'
Таблица `Fruit`:
`fid`, `fruit`
1, 'red apple'
2, 'green apple'
|
Если эти таблицы объединить запросом "SELECT * FROM Color JOIN Fruit ON cid=fid;" — должно по идее получиться следующее (проверьте!):
Цитата: |
`cid`, `color`, `fid`, `fruit`
1, 'red', 1, 'red apple'
2, 'green', 2, 'green apple'
|
А если в запросе заменить "join" на "left join", то должна появиться дополнительная строка в результате:
Цитата: |
`cid`, `color`, `fid`, `fruit`
1, 'red', 1, 'red apple'
2, 'green', 2, 'green apple'
3, 'blue', null, null
|
|
_____________________________ Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
|
|
|
|
|
|
|
Возраст: 53 C нами с 01.01.2008 Репутация: 77.1
|
|
Олег писал(а): |
Почему-то никогда не сталкивался с "inner join" и даже толком не пойму, в чём его особенность по сравнению с обычным "join".
|
если речь про MySQL, то разницы нет (отсюда):
Цитата: |
INNER JOIN and , (comma) are semantically equivalent in the absence of a join condition: both produce a Cartesian product between the specified tables (that is, each and every row in the first table is joined to each and every row in the second table).
|
Кстати, можно заменить на
|
|
|
|
|
|
|
|
Возраст: 45 C нами с 27.03.2005 Репутация: 205.2
|
|
biorobot писал(а): |
(отсюда):
Цитата: |
INNER JOIN and , (comma) are semantically equivalent in the absence of a join condition: both produce a Cartesian product between the specified tables (that is, each and every row in the first table is joined to each and every row in the second table).
|
|
biorobot, спасибо за справку! Я как раз по этому вопросу заглядывал на эту же страницу, но как-то не хватило терпения до нужного места. Отвлёкся на "In MySQL, CROSS JOIN is a syntactic equivalent to INNER JOIN (they can replace each other)". Велик и могуч SQL. Впрочем теперь, с высоты полученных знаний, можно заметить, что ответ-то был в самом верху, в синтаксисе: "table_reference [INNER | CROSS] JOIN table_factor". Т.е. можно писать "INNER", можно писать "CROSS", а можно просто ничего не писать перед "JOIN", и это будет, наверное, самым правильным решением!
biorobot писал(а): |
Кстати, можно заменить на
|
Да я тоже всё время с удовольствием замечаю такую возможность и думаю "всё, буду пользоваться!" Но потом вспоминаю, что у меня в таблицах никогда не бывает полей с совпадающими именами. Да и если бы в двух таблицах было поле 'id' — с вероятностью 99% это были бы идентификаторы разных объектов, и объединять по ним было бы вовсе не "NATURAL".
|
_____________________________ Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
|
|
|
|
|
|
|
Возраст: 53 C нами с 01.01.2008 Репутация: 77.1
|
|
У меня бывает, особенно когда many-to-many, типа ... FROM user_group ug JOIN groups g USING(group_id) ... |
|
|
|
|
|
|
|
|
Возраст: 45 C нами с 27.03.2005 Репутация: 205.2
|
|
biorobot, это один из аргументов в споре о том, как "правильно" (с точки зрения эстетики и удобства) именовать поля таблиц, который я уже давно веду с самим собой (за неимением под рукой других желающих).
Я обычно (как можно видеть из примера выше) добавляю в название поля "идентификатор" таблицы (первую букву или пару букв), чтобы все поля имели уникальные имена, и не приходилось плодить псевдонимов или обращаться по полному имени (с упоминанием таблицы). Напимер, в Вашем примере у меня поля назывались бы: `G_ID` в таблице `Group` и `UG_GID` в таблице `UserGroup` (в первом случае именно `G_ID`, а не `G_GID`, чтобы не было тавтологии). В этом есть даже некий "семантический" смысл: везде, где упоминается имя поля, ясно не только, какое это свойство, но и какого именно класса. (Например `U_Name` — не просто некое имя, а именно имя пользователя.)
Вообще меня эта тема интересует. Я знаю, что в некоторых больших открытых сообществах разработчиков документально фиксируются "правила хорошего тона" оформления текстов программ. Я видел такие правила, например, для C++ (или PHP, не помню точно), но никогда не видел подобных правил, касающихся именования таблиц и полей в базах данных. Если кто-то видел что-нибудь подобное — поделитесь информацией, пожалуйста!
|
_____________________________ Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
|
|
|
|
|
|
|
Возраст: 38 C нами с 08.05.2009 Репутация: 5.6
|
|
Олег,
Цитата: |
echo "<tr><td colspan='2'>$row[u_name]</td>\n";
|
я решил проблему так
Цитата: |
echo "<tr><td colspan=2>$row[u_name]</td>\n";
|
т.е. без ковычек
Еще вопрос из множества аecho "<table border=1 bgcolor=#FFFFb1 cellspacing=10 cellpadding=2>\n";
while ($row3 = mysql_fetch_assoc($result3))
{
echo "<tr>\n";
printf("<td colspan=7><center>Период №$row3[period]</td>\n");
echo "</tr>\n";
}
while ($row2 = mysql_fetch_assoc($result2))
{
echo "<tr>\n";
printf("<td>$row2[u_name]</td>\n");
printf("<td>$row2[t_ypakovka]</td>\n");
printf("<td>$row2[klient]</td>\n");
printf("<td>$row2[stock]</td>\n");
printf("<td>$row2[number]</td>\n");
printf("<td>$row2[s_date]</td>\n");
printf("<td>$row2[rest]</td>\n");
echo "</tr>\n";
}
echo "</table>\n"; | как мне сюда вставить форму ввода для каждой строки и чтоб то что вставил падало в mysql путём кнопочки?
|
_____________________________ Прошу не тыкать в мануал его и так предостаточно!!!
|
|
|
|
|
|
|
Возраст: 45 C нами с 27.03.2005 Репутация: 205.2
|
|
Павлин писал(а): |
т.е. без ковычек
|
Вариант, конечно, для начала, но вряд ли стоит привыкать так делать. Во-первых, когда появится значение какого-нибудь атрибута HTML, состоящее из нескольких слов, — кавычки понадобятся. Во-вторых, если захотите перейти со временем на XHTML — там кавычки обязательны, т.ч. больше кода перепроверять и поправлять придётся. В общем, пишите лучше одиночные кавычки.
Павлин писал(а): |
Еще вопрос из множества а
|
Что за множество "A"?
Павлин писал(а): |
как мне сюда вставить форму ввода для каждой строки и чтоб то что вставил падало в mysql путём кнопочки?
|
Замечательная у Вас способность: сформулировать "ТЗ" на весь рабочий день так, как будто надо вставить в уже готовый код парочку строк.
Я пока могу лишь перечислить, чему нужно научиться для того, что Вам сейчас нужно:
- создавать формы в HTML (теги form и input);
- получать данные из форм в PHP (переменная $_REQUEST);
- добавлять и изменять данные в MySQL (операторы INSERT и UPDATE).
Докладывайте по пунктам: что получилось, что вызвало трудности...
Добавлено спустя 3 минуты 33 секунды:
Общая технология работы с формами в PHP такова. В начале скрипта проверяете, не пришли ли нужные данные (например, есть ли в массиве $_REQUEST нужное значение). Если данных ещё нет — выводите форму и завершаете скрипт. Если данные есть — обрабатываете их (например, кладёте в БД).
|
_____________________________ Уточняйте значение слов, и вы избавите человечество от половины своих заблуждений. Рене Декарт
|
|
|
|
|
|
|
Возраст: 53 C нами с 01.01.2008 Репутация: 77.1
|
|
Олег писал(а): |
biorobot, это один из аргументов в споре о том, как "правильно" (с точки зрения эстетики и удобства) именовать поля таблиц, который я уже давно веду с самим собой (за неимением под рукой других желающих).
|
Я не желающий! Я SQL не люблю, пишу по необходимости и как можно проще.
Олег писал(а): |
Я знаю, что в некоторых больших открытых сообществах разработчиков документально фиксируются "правила хорошего тона" оформления текстов программ.
|
Это бывает наверное во всех крупных компаниях (style guide, coding standard, etc.) и, действительно, в крупных сообществах, типа FSF/GNU.
Олег писал(а): |
...но никогда не видел подобных правил, касающихся именования таблиц и полей в базах данных. Если кто-то видел что-нибудь подобное — поделитесь информацией, пожалуйста!
|
Да я вот бегло посмотрел, люди такую тему обсуждают: гугл
|
|
|
|
|
|
|
|
На страницу « 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 »
|
|