2 record giống nhau nhưng chỉ show cái dc select trước? 2010-03-02 09:26:26

e có table thế này:
matched(id,name,match)
id | name | matched_with
1 | Boy  |   2
2 | Girl |   1
3 | Ms.A |   4
4 | Mr.B |   3

nếu select thông thường thì nó sẽ ra cả 4 => dư thừa
e muốn nó chỉ hiện ra record số 1 và 3 thôi vì 2 với 4 nội dung giống với 1 và 3 :(

mong các bro giúp dùm, e bí chỗ này rùi :(

Tra loi 7 comment(s) gaulucky92 2010-03-02 09:26:26

TG 2010-03-02 09:47:03

Nếu dựa vào dữ liệu cả table trên thì không có cái nào giống cái nào

Tra loi

gaulucky92 2010-03-02 10:37:28


e nghĩ ra cách này:
<?
$query
= mysql_query(...);
$i = 0;
while (
$row = mysql_fetch_array($query)){
$except[$i] = $row['match'];$i++;
if (!
in_array($row['match'],$except))
{
// show data
}
}
?>

khi tạo vòng lặp sẽ kiểm tra dữ liệu id có được nêu trong phần match trước đó chưa (dùng hàm in_array)

chạy thử thấy đúng là chỉ hiện ra có 1 và 3 :)

Tra loi

choncon 2010-03-02 05:05:31

dở hơi à gấu ! sao ko dùng IN

Tra loi

gaulucky92 2010-03-02 08:31:35


e có google ra dc hàm in() trong query, nhưng ko biết xài :(
để mai châm cứu lại... có lẽ là do viết lại query cho cái vòng lặp nên nó cứ load mãi ko xong
e viết kiểu thế này này:
<?
$query
= mysql_query(...);
while (...){
$except = array(1,2,3);
$query = mysql_query(... WHERE data not in($except));
}
?>

lúc trước dính cái lỗi này khi làm dạng đệ quy, root với sub mà đặt dung biến $query rốt cuộc nó hiện sai tùm lum... giờ dùng lại thì nó treo luôn ko ra dc =.=

Tra loi

choncon 2010-03-03 09:56:54

Nhiều người dùng đệ qui thường ko biết sai ở chỗ parent_id khởi tạo ko chỉ bằng 0 mà có thể là một ID mà row đã bị delete.
Tìm hiểu GROUP_CONCAT cũng khá hay.

Tra loi

hmc 2010-03-03 11:08:29

tớ thấy gấu làm cái in_array cung được thì phải

Tra loi

gaulucky92 2010-03-03 12:55:42

tớ thấy gấu làm cái in_array cung được thì phải

dùng IN dĩ nhiên là tiện hơn vì nó nằm ở mảng query... khổ nỗi ko biết xài :(

Tra loi

Y kien