Η σελίδα μας αναβαθμίστηκε, γι' αυτό τον λόγο τα μέλη μας θα πρέπει να ζητήσουν νέο κωδικό πρόσβασης από την υπηρεσία "Αποστολή κωδικού πρόσβασης".
Εάν το email με τον νέο κωδικό δεν έρθει στο inbox κοιτάξτε και στο spam folder. Ο server είναι φρέσκος και δεν έχει το reputation που του αξίζει.

Αναζήτηση string σε πίνακα MySQL με πολλαπλά LIKE

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Αναζήτηση string σε πίνακα MySQL με πολλαπλά LIKE

Δημοσίευση από elavd » 11 Ιούλ 2012 11:55

Μέσω ενός πεδίου αναζήτησης σε μια σελίδα PHP, στέλνω ένα string $q στη MySQL μου για να δω εάν αυτό το string υπάρχει σε μία από 2 στήλες του πίνακα (col1, col2).

Κώδικας: Επιλογή όλων

SELECT col1, col2 FROM table WHERE (col1 LIKE '%$q%' OR col2 LIKE '%$q%')
Το query δουλεύει μεν, αλλά πώς μπορώ να ξέρω σε ποια από τις 2 στήλες βρέθηκε αυτό που ψάχνω (στην col1 ή στην col2);

Πώς μπορώ να το δω αυτό είτε κατευθείαν μέσω κάποιας function της MySQL είτε μέσω της PHP;

Ευχαριστώ προκαταβολικά για τη βοήθεια!
Εικόνα

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Αναζήτηση string σε πίνακα MySQL με πολλαπλά LIKE

Δημοσίευση από dva_dev » 11 Ιούλ 2012 14:04

Θα κάνεις 2 queries ή θα χρησιμοποιήσεις κάποια από τις string functions (π.χ. strpos).
Τελευταία επεξεργασία από το μέλος dva_dev την 11 Ιούλ 2012 14:06, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Αναζήτηση string σε πίνακα MySQL με πολλαπλά LIKE

Δημοσίευση από elavd » 11 Ιούλ 2012 14:05

Στο 2ο query δηλαδή πώς θα ψάξω τη στήλη στην οποία βρέθηκε στο string;
Εικόνα

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Αναζήτηση string σε πίνακα MySQL με πολλαπλά LIKE

Δημοσίευση από dva_dev » 11 Ιούλ 2012 14:11

Το 1o query
SELECT col1 FROM table WHERE (col1 LIKE '%$q%)
Το 2o query
SELECT col2 FROM table WHERE (col2 LIKE '%$q%')

ή και τα δύο μαζί
select colname, col1, col2 from
(
select 'col1' as colname, col1, null as col2 from table where (col1 LIKE '%$q%)
union
select 'col2' as colname, null as col1, col2 from table where (col2 LIKE '%$q%)
) tmp

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Αναζήτηση string σε πίνακα MySQL με πολλαπλά LIKE

Δημοσίευση από elavd » 11 Ιούλ 2012 14:13

Σε ευχαριστώ πολύ για τη βοήθεια!
Θα το δοκιμάσω!!!
Εικόνα

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Αναζήτηση string σε πίνακα MySQL με πολλαπλά LIKE

Δημοσίευση από elavd » 11 Ιούλ 2012 14:29

Επειδή δεν έχω ξανακάνει UNION και χρειάζομαι λίγη βοήθεια στη σύνταξη, αν οι στήλες ήτανε 3 (col1, col2, col3) ο κώδικας αυτός πώς θα έπρεπε να γραφεί;

Κώδικας: Επιλογή όλων

select colname, col1, col2 from 
( 
select 'col1' as colname, col1, null as col2 from table where (col1 LIKE '%$q%') 
union 
select 'col2' as colname, null as col1, col2 from table where (col2 LIKE '%$q%') 
) tmp
Εικόνα

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Αναζήτηση string σε πίνακα MySQL με πολλαπλά LIKE

Δημοσίευση από dva_dev » 11 Ιούλ 2012 14:42

Τα select που κάνεις union πρέπει να φέρνουν τον ίδιο αριθμό στηλών και να έχουν (ή να μπορεί να μετατραπεί - αυτόματα συνήθως) το ίδιο data type.

Π.χ.
select col1, col2, col3, col4, col5 from ....
union
select col11, col12, col13, col14, col15 from ...
union
select col21, col22, col23, col24, col25 from ...

Άβαταρ μέλους
elavd
Δημοσιεύσεις: 323
Εγγραφή: 16 Σεπ 2004 00:04
Τοποθεσία: Ιωάννινα

Αναζήτηση string σε πίνακα MySQL με πολλαπλά LIKE

Δημοσίευση από elavd » 11 Ιούλ 2012 14:47

Σε ευχαριστώ και πάλι!!! :)
Εικόνα

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες