<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Rpsl Blog &#187; join</title>
	<atom:link href="http://blog.rpsl.info/tag/join/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rpsl.info</link>
	<description></description>
	<lastBuildDate>Sun, 20 May 2012 12:09:21 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Еще немного про собеседования</title>
		<link>http://blog.rpsl.info/2011/03/eshhe-nemnogo-pro-sobesedovaniya/</link>
		<comments>http://blog.rpsl.info/2011/03/eshhe-nemnogo-pro-sobesedovaniya/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 14:46:04 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[join]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[жизнь]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=24878</guid>
		<description><![CDATA[Решил дополнить поднятую тему про собеседования и рассказать о вопросах которые задают чаще всего. Изначально, я хотел в этом посте написать все самые интересные вопросы и дополнить их ответами, но когда начал его писать, то понял что ответы тут не нужны. Те кому это действительно надо, сами порешают данные задачи, остальные могут просто пролистать. Первое на что хочу обратить ваше внимание, это то, что вопросы которые задают php(?) программистам, в основной своей сути имеют довольно академический характер и в жизненных циклах проектов встречаются не часто, но тем не менее, нужно уметь решать эти задачи. Это обусловленно тем, что у работодателей [...]]]></description>
			<content:encoded><![CDATA[<p>Решил дополнить поднятую тему про собеседования и рассказать о вопросах которые задают чаще всего.</p>
<p>Изначально, я хотел в этом посте написать все самые интересные вопросы и дополнить их ответами, но когда начал его писать, то понял что ответы тут не нужны. Те кому это действительно надо, сами порешают данные задачи, остальные могут просто пролистать.</p>
<p>Первое на что хочу обратить ваше внимание, это то, что вопросы которые задают php(?) программистам, в основной своей сути имеют довольно академический характер и в жизненных циклах проектов встречаются не часто, но тем не менее, нужно уметь решать эти задачи. Это обусловленно тем, что у работодателей нету времени и желания давать вам типичные задачи, в стиле &#8212; &#171;Напиши класс, который будет отвечать за работу с пользователями&#187;. 99 процентов всех вопросов задаются по заготовленному листку и должны быть решены на листке бумаги. Никаких IDE, никаких гуглов, никаких ответов типа &#171;я не помню синтаксис&#187;. Если вы настроены решительно и хотите произвести хорошее впечатление, то уделите время, что бы потренироваться и чувствовать себя уверенно.</p>
<p>Все вопросы можно разделить на три категории: PHP, MySQL(?), все остальное.</p>
<p>Любой из этих пунктов, так же делится на две части: теория и практика. Начну пожалуй с PHP. С теоретическими вопросами, в целом, не сложно. Они почти везде одинаковые: Отличия между PHP 5.2 и 5.3, основные приципы ООП. Не частый, но вопрос с подвохом &#8212; &#171;В каких случаях использование ООП, является убыточным?&#187;. Дальнейшие вопросы на теорию, в основном, зависят от ваших ответов, и несут цель узнать на сколько хорошо вы разбираетесь в материале о котором говорили выше.</p>
<p>Практические вопросы, это чаще всего просьба написать некую ф-цию, которая делает какую либо хрень. Почти на каждом собеседование меня просили написать функцию которая переворачивает строку, без использования дополнительных буферов, можно попробовать схитрить и ответить что-то в стиле</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #000000; font-weight: bold;">function</span> revert<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$string</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">return</span> <span style="color: #990000;">strrev</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$string</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>
Но это не cамый лучший вариант ответа. Выучите алгоритм с обращением к символом строки как к объекту массива.<br />
Очень частые задачи, на написание рекурсивных функций или на понимание работы операторов кода.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #339933;">++</span><span style="color: #000088;">$a</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$a</span><span style="color: #339933;">++</span> <span style="color: #339933;">-</span> <span style="color: #339933;">++</span><span style="color: #000088;">$a</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$a</span> <span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>На днях пока решал задачи, попалось интересное задание, у меня такое ни разу не спрашивали, но думаю что к такому надо быть готовым:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span> <span style="color: #208080;">0123</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">123</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p></p>
<p>Думаю, что на счет PHP я достаточно ясно изложил типовые вопросы, если что-то осталось не понятно, то спрашивайте в комментариях.<br />
<br />
Теоретические вопросы про MySQL или любую другую СУБД почти всегда касаются индексов и насколько вы понимаете как их использовать, в каких случаях и на что их ставить и в каких случаях индексы могут быть вредны. Обязательно спросят про различия между версиями. Поинтересуются насколько глубоко вы знаете тонкости работы СУБД и вкурсе ли вы про то, что такое тригеры, хранимые процердуры, представления.</p>
<p>Практические задачи &#8212; это просьба нарисовать две таблицы с различными данными и просьба написать запрос, который покажет умеете ли вы использовать операторы HAVING, GROUP BY, &#8230; etc. Обязательно знать разницу между <a href="http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya.html">JOIN запросами</a>.</p>
<p>Еще часто спрашивают про верстку, про css, про javascript. Но расписывать это все не вижу смысла.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/03/eshhe-nemnogo-pro-sobesedovaniya/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>SQL Joins Виды, типы, различия.</title>
		<link>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya/</link>
		<comments>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 18:56:43 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[join]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=307</guid>
		<description><![CDATA[В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным. Для начала оговорим, что у нас есть две таблицы: Table A и Table B: id name id name &#8212; &#8212;- &#8212; &#8212;- 1 Pirate 1 Rutabaga 2 Monkey 2 Pirate 3 Ninja 3 Darth Vader 4 Spaghetti 4 Ninja Теперь можно рассмотреть, варианты и различия возможных JOIN запросов. Inner join выведет записи, которые соответствуют  таблице A и таблице B. SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name id name id name &#8212; &#8212;- &#8212; &#8212;- 1 Pirate 2 Pirate 3 Ninja 4 Ninja Full outer [...]]]></description>
			<content:encoded><![CDATA[<p>В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным.</p>
<p>Для начала оговорим, что у нас есть две таблицы: <strong>Table A</strong> и <strong>Table B</strong>:</p>
<blockquote><p>id name       id  name<br />
&#8212; &#8212;-       &#8212;  &#8212;-<br />
1  <span style="color: red">Pirate</span> 1   Rutabaga<br />
2  Monkey     2   <span style="color: red">Pirate</span><br />
3  <span style="color: red">Ninja</span> 3   Darth Vader<br />
4  Spaghetti  4   <span style="color: red">Ninja<br />
</span></p></blockquote>
<p>Теперь можно рассмотреть, варианты и различия возможных JOIN запросов.</p>
<p><strong>Inner join</strong> выведет записи, которые соответствуют  таблице A и таблице B.</p>
<blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-inner.png"><img class="alignright size-thumbnail wp-image-308 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-inner-150x150.png" alt="join-inner" width="150" height="150" /></a></p>
<p>SELECT * FROM TableA<br />
<strong>INNER JOIN</strong> TableB<br />
ON TableA.name = TableB.name</p>
<p>id  name       id   name<br />
&#8212;  &#8212;-       &#8212;   &#8212;-<br />
1   Pirate     2    Pirate<br />
3   Ninja      4    Ninja</p></blockquote>
<p><span id="more-307"></span></p>
<p><strong>Full outer join</strong> выведет все записи из Таблицы A и Таблицы B,  сопоставив данные из обеих таблиц, если в одной из таблиц данные отсутсвуют, то результатом для данной ячейки будет &#171;NULL&#187;</p>
<blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-cartesian.png"><img class="alignright size-thumbnail wp-image-314 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-cartesian-150x150.png" alt="join-cartesian" width="150" height="150" /></a>SELECT * FROM TableA<br />
<strong>FULL OUTER JOIN</strong> TableB<br />
ON TableA.name = TableB.name</p>
<p>id    name       id    name<br />
&#8212;    &#8212;-       &#8212;    &#8212;-<br />
1     Pirate     2     Pirate<br />
2     Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span><br />
3     Ninja      4     Ninja<br />
4     Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span><br />
<span style="color: gray">null</span> <span style="color: gray">null</span> 1     Rutabaga<br />
<span style="color: gray">null</span> <span style="color: gray">null</span> 3     Darth Vader</p></blockquote>
<p><strong>Left outer join</strong> выведет данные из Таблицы A, с сопутсвующими данными из Таблицы B. Если подходящих данных в Таблице B нету, то будет выбран &#171;NULL&#187;</p>
<blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left.png"><img class="alignright size-thumbnail wp-image-316 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-150x150.png" alt="join-left" width="150" height="150" /></a>SELECT * FROM TableA<br />
<strong>LEFT OUTER JOIN</strong> TableB<br />
ON TableA.name = TableB.name</p>
<p>id  name       id    name<br />
&#8212;  &#8212;-       &#8212;    &#8212;-<br />
1   Pirate     2     Pirate<br />
2   Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span><br />
3   Ninja      4     Ninja<br />
4   Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span></p></blockquote>
<p>Оперируя прошлым примером, нам не составит труда достать только те данные, которые есть в Таблице A, для этого нужно использовть <strong> left outer join</strong>, с исключением пустых записей из Таблицы B</p>
<blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-outer.png"><img class="alignright size-thumbnail wp-image-318 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-outer-150x150.png" alt="join-left-outer" width="150" height="150" /></a>SELECT * FROM TableA<br />
LEFT OUTER JOIN TableB<br />
ON TableA.name = TableB.name<br />
<strong>WHERE TableB.id IS null</strong></p>
<p>id  name       id     name<br />
&#8212;  &#8212;-       &#8212;     &#8212;-<br />
2   Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span><br />
4   Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span></p></blockquote>
<p>А если, чуть чуть усложнить задачу, то мы лего достанем данные, которые не имеют ничего общего. Для этого нужно использовать <strong>full outer join</strong>.</p>
<blockquote><p><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-outer.png"><img class="alignright size-thumbnail wp-image-320 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-outer-150x150.png" alt="join-outer" width="150" height="150" /></a>SELECT * FROM TableA<br />
FULL OUTER JOIN TableB<br />
ON TableA.name = TableB.name<br />
<strong>WHERE TableA.id IS null<br />
OR TableB.id IS null<br />
</strong><br />
id    name       id    name<br />
&#8212;    &#8212;-       &#8212;    &#8212;-<br />
2     Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span><br />
4     Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span><br />
<span style="color: gray">null</span> <span style="color: gray">null</span> 1     Rutabaga<br />
<span style="color: gray">null</span> <span style="color: gray">null</span> 3     Darth Vader</p></blockquote>
<p>Вот собственно и всё. Всё просто.</p>
<p>P.s. Данная статья является вольным переводом некой статьи, авторство которой мне не известно.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

