Página 9
| 2 | Lilliana Angelovska |
+----+---------------------+
SELECT * FROM shirts;
+----+---------+--------+-------+
| id | style | color | owner |
+----+---------+--------+-------+
| 1 | polo | blue | 1 |
| 2 | dress | white | 1 |
| 3 | t-shirt | blue | 1 |
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
| 7 | t-shirt | white | 2 |
+----+---------+--------+-------+
SELECT s.* FROM persons p, shirts s
WHERE p.name LIKE 'Lilliana%'
AND s.owner = p.id
AND s.color <> 'white';
+----+-------+--------+-------+
| id | style | color | owner |
+----+-------+--------+-------+
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
+----+-------+--------+-------+
Pesquisando em duas chaves
MySQL ainda não faz, pesquisa com duas chaves diferentes combinadas com OR (Pesquisando com uma chave OR em diferentes partes é bem melhor):
SELECT field1_index, field2_index FROM test_table WHERE field1_index = '1'
OR field2_index = '1'
No momento, você pode resolver isto com muita eficiência, usando uma tabela TEMPORÁRIA; Este tipo de otimização é também muito boa, se você está usando muitas perguntas complicadas onde o servidor do SQL faz as otimizações no pedido errado.
CREATE TEMPORARY TABLE tmp
SELECT field1_index, field2_index FROM test_table WHERE field1_index = '1';
INSERT INTO tmp
SELECT field1_index, field2_index FROM test_table WHERE field2_index = '1';
SELECT * from tmp;
DROP TABLE tmp;
Acima está o caminho para resolver a pergunta com efeito de união de duas perguntas.
|