2011-09-05 4 views
0

J'ai 2 tables que j'ai besoin d'interroger avec des contenus similaires mais des noms de champs différents.Comment fusionner ces 2 requêtes en regardant 2 tables en 1 requête?

Je veux fusionner les 2 requêtes suivantes en 1 de sorte que j'ai 1 ensemble de résultats.

Les 2 requêtes sont:

SELECT 
    bookings.booking_name, 
    bookings.booking_email, 
    bookings.booking_mobile 
    FROM 
    bookings 
    WHERE 
    (bookings.booking_email LIKE "%' . $_POST['val'] . '%" 
    OR 
    bookings.booking_name LIKE "%' . $_POST['val'] . '%" 
    OR 
    bookings.booking_mobile LIKE "%' . $_POST['val'] . '%" 
) 


SELECT 
    purchases.customer_name, 
    purchases.customer_email, 
    purchases.customer_phone 
FROM 
handbags 
WHERE 
    (purchases.customer_email LIKE "%' . $_POST['val'] . '%" 
    OR 
    purchases.customer_name LIKE "%' . $_POST['val'] . '%" 
    OR 
    purchases.customer_phone LIKE "%' . $_POST['val'] . '%" 
) 

Comment est ce genre de chose accompli afin que mon résultat customer_email et booking_email est accessible par simple « e-mail ».

+1

Google pour "Injection SQL" et se rendre compte que ce code a un énorme trou de sécurité. –

+0

Ahh, merci pour cela. Ce sql se passe derrière une connexion sécurisée pour un environnement de bureau, donc ce n'est pas un gros risque. – willdanceforfun

Répondre

1

Combinez les deux requêtes avec l'opérateur UNION et attribuez des noms aux colonnes.

(SELECT 
    bookings.booking_name AS name, 
    bookings.booking_email AS email, 
    bookings.booking_mobile AS phone 
FROM 
    bookings 
WHERE 
(bookings.booking_email LIKE "%' . $_POST['val'] . '%" 
    OR 
    bookings.booking_name LIKE "%' . $_POST['val'] . '%" 
    OR 
    bookings.booking_mobile LIKE "%' . $_POST['val'] . '%" 
)) 
UNION 
(
SELECT 
    purchases.customer_name AS name, 
    purchases.customer_email AS email, 
    purchases.customer_phone AS phone 
FROM 
handbags 
WHERE 
(purchases.customer_email LIKE "%' . $_POST['val'] . '%" 
    OR 
    purchases.customer_name LIKE "%' . $_POST['val'] . '%" 
    OR 
    purchases.customer_phone LIKE "%' . $_POST['val'] . '%" 
)); 
+0

Merci pour cela. Avec ce genre de requête bien que lorsque j'imprime les résultats, j'ai 2 variables dans un tableau ie customer_name et booking_name - comment puis-je fusionner cela? – willdanceforfun

+0

@KeenLearner Désolé pour avoir initialement rejeté l'édition, j'ai fait une erreur mais il était trop tard pour la corriger. – Gilles

+0

Désolé je ne peux pas vous obtenir. Fusionner customer_name et booking_name? vous voulez dire relation? Joindre?? – sujal

2

union [all]-les ensemble:

select ... 
union 
select ... 

ajouter 'tous' permettra de doublons.

+0

merci Anton. Je suis un peu un newb et maintenant que j'ai vu l'exemple plus grand, je peux donner un sens à la vôtre. – willdanceforfun

Questions connexes