[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод из таблицы БД строк, значения 1 поля которой
Nesquik27
Вообщем долго сижу ничего пока не подошло. Вроде задача простая. Есть таблица с полем integer допустим назовем это поле "a". Нужно вывести строки из этой таблицы, где значения поля a не равно значениям из аналогичных полей (допустим "b" и "с") 2-ух других таблиц. I need help! ::sad24.gif::

			$all_tickets = mysql_query("SELECT * FROM all_tickets WHERE m_city = '$m_city' ORDER BY m_id DESC");


получаем все из all_tickets

			$accepted_tickets_order_ac_m_id = mysql_query("SELECT * FROM accepted_tickets ORDER BY ac_m_id DESC") or die(mysql_error());

$ac_m_id_array = array();
while($accepted_tickets_array = mysql_fetch_array($accepted_tickets_order_ac_m_id)) {
$ac_m_id_array[] = $accepted_tickets_array['ac_m_id'];
}


Записываем в массив ac_m_id

надо чтобы SELECT * FROM all_tickets WHERE m_city = '$m_city' AND m_id != ac_m_id
заранее сорри за нубство, пишу на php/mysql недавно ::smile24.gif::
paul85
Я бы сделал так, например:

SELECT t1.* 
FROM
table1 AS t1
LEFT JOIN
table2 AS t2
ON
t1.a = t2.b
LEFT JOIN
table3 AS t3
ON
t1.a = t3.c
WHERE
t2.b IS NULL AND
t3.c IS NULL;

Да, и не забудьте про индексы, если их нет.

Nesquik27
Решение

			$all_tickets = mysql_query("SELECT * FROM all_tickets a WHERE (a.m_city = '$m_city') AND NOT EXISTS (SELECT * FROM accepted_tickets at WHERE a.m_id = at.ac_m_id) AND NOT EXISTS (SELECT * FROM rejected_tickets rj WHERE a.m_id = rj.rj_m_id) ORDER BY m_id DESC") or die(mysql_error());
paul85
Мда... Ну бывает!
Nesquik27
Не записывается массив для передачи джейсоном

			$(document).ready(function() {
$('#more_tickets').data('counter', 0).click(function(e) {
e.preventDefault();

var counter = $(this).data('counter');
$(this).data('counter', counter + <?php echo $limit; ?>);

var inProgress = false;
var startTicket = 0 + $(this).data('counter');
var act = '<?php echo $_GET['act']; ?>';
var limit = '<?php echo $limit; ?>';
var driverlogin = '<?php echo $_SESSION['driverlogin']; ?>';

$.ajax({
url: 'ob.php',
method: 'post',
data: {
'startTicket': startTicket,
'act': act,
'limit': limit,
'driverlogin': driverlogin
},
beforeSend: function() {
inProgress = true;
}
}
).done(function(data){

data = jQuery.parseJSON(data);

if (data.length > 0) {

$.each(data, function(index, data){
$('.tickets').append(data);
});

inProgress = false;

}
}
);
});
});


	if (!empty($_POST['driverlogin'])) {

$ticket_data = array();

$startTicket = substr(htmlspecialchars(trim($_POST['startTicket'])), 0, 1000);
$act = substr(htmlspecialchars(trim($_POST['act'])), 0, 1000);
$limit = substr(htmlspecialchars(trim($_POST['limit'])), 0, 1000);
$driverlogin = substr(htmlspecialchars(trim($_POST['driverlogin'])), 0, 1000);

$data_type1 = '';
$data_type2 = '';

if(!empty($_GET['sort'])) {
$sorting = $_GET['sort'];
if($sorting == 'prize') {
$order = 'prize';
$data_type1 = 'ABS(';
$data_type2 = ')';
$sorting_val = 'Цене';
}
if($sorting == 'hum') {
$order = 'hum';
$sorting_val = 'Цене';
}
if($sorting == 'phone') {
$order = 'phone';;
$sorting_val = 'Телефону';
}
if($sorting == 'from') {
$order = 'from';
$sorting_val = 'Месту отправления';
}
if($sorting == 'to') {
$order = 'to';
$sorting_val = 'Месту назначения';
}
if($sorting == 'last') {
$order = 'm_id';
$sorting_val = 'Последней заявке';
}
}

else {
$order = 'm_id';
$sorting_val = 'Последней заявке';
}

if(!empty($_GET['direction'])) {
$direction = $_GET['direction'];
if($direction == 'asc') {
$d = 'ASC';
$direction_val = 'В порядке возрастания';
}
if($direction == 'desc') {
$d = 'DESC';
$direction_val = 'В порядке убывания';
}
}

else {
$d = 'DESC';
$direction_val = 'В порядке убывания';
}

if($act == 'home') {
$all_tickets = mysql_query("SELECT * FROM all_tickets a WHERE (a.m_city = '$m_city') AND NOT EXISTS (SELECT * FROM banned_tickets bn WHERE a.m_phone = bn.bn_phone AND bn.bn_login = '$driverlogin') AND NOT EXISTS (SELECT * FROM accepted_tickets at WHERE a.m_m_id = at.ac_m_id AND at.ac_login = '$driverlogin') AND NOT EXISTS (SELECT * FROM archived_tickets ar WHERE a.m_m_id = ar.ar_m_id AND ar.ar_login = '$driverlogin') ORDER BY $data_type1 m_$order $data_type2 $d LIMIT $startTicket, $limit") or die(mysql_error());
}

if($act == 'accepted') {

$accepted_tickets_order_ac_m_id = mysql_query("SELECT * FROM accepted_tickets ac WHERE ac.ac_login = '$driverlogin' AND NOT EXISTS (SELECT * FROM approved_tickets ap WHERE ac.ac_m_id = ap.ap_m_id AND ap.ap_login = '$driverlogin') ORDER BY $data_type1 ac_$order $data_type2 $d LIMIT $startTicket, $limit") or die(mysql_error());

while($ticket = mysql_fetch_array($accepted_tickets_order_ac_m_id)) {

if ($ticket['ac_date'] == date('d.m.y')) {
$ticket_date = 'Сегодня';
}
else if ($ticket['ac_date'] == date('d.m.y', strtotime(date('d.m.y'))-86400)) {
$ticket_date = 'Вчера';
}
else {
$ticket_date = $ticket['ac_date'];
}
$ticket_data[] = '
<div class="ticket">
<div class="ticket_lft">
<p><a target="_blank" href="http://maps.yandex.ru/?text='
.$ticket['ac_from'].'"><strong>Откуда:</strong> '.$ticket['ac_from'].'</a></p>
<p><a target="_blank" href="http://maps.yandex.ru/?text='
.$ticket['ac_to'].'"><strong>Куда:</strong> '.$ticket['ac_to'].'</a></p>
<p><strong>Телефон:</strong> '
.$ticket['ac_phone'].'</p>
</div>
<div class="ticket_rt">
<!--a title="Переместить в корзину" class="to_archive" href="">X</a-->
<p>'
.$ticket_date.', '.$ticket['ac_time'].'</p>
<p>'
.$ticket['ac_prize'].'</p>
<p>'
. $ticket['ac_hum'] . pluralForm($ticket['ac_hum'], ' человек', ' человека', ' человек').'</p>
</div>
<div class="clear"></div>
<div class="buttons">
<h3>Вы в списке кандидатов на эту поездку!</h3>

<input type="hidden" name="ac_login" value="'
.$driverlogin.'">
<input type="hidden" name="ac_m_id" value="'
.$ticket['ac_m_id'].'">
<input type="hidden" name="ac_from" value="'
.$ticket['ac_from'].'">
<input type="hidden" name="ac_to" value="'
.$ticket['ac_to'].'">
<input type="hidden" name="ac_hum" value="'
.$ticket['ac_hum'].'">
<input type="hidden" name="ac_prize" value="'
.$ticket['ac_prize'].'">
<input type="hidden" name="ac_phone" value="'
.$ticket['ac_phone'].'">
<input type="hidden" name="ac_date" value="'
.$ticket['ac_date'].'">
<input type="hidden" name="ac_time" value="'
.$ticket['ac_time'].'">
</div>
</div>
'
;
}

}


if($act == 'approved') {
$approved_tickets_order_ar_m_id = mysql_query("SELECT * FROM approved_tickets WHERE ap_login = '$driverlogin' ORDER BY $data_type1 ap_$order $data_type2 $d LIMIT $startTicket, $limit") or die(mysql_error());
}

if($act == 'banned') {
$banned_tickets_order_bn_id = mysql_query("SELECT * FROM banned_tickets WHERE bn_login = '$driverlogin' ORDER BY bn_id DESC LIMIT $startTicket, $limit") or die(mysql_error());
}

if($act == 'trash') {
$archived_tickets_order_ar_m_id = mysql_query("SELECT * FROM archived_tickets WHERE ar_login = '$driverlogin' ORDER BY $data_type1 ar_$order $data_type2 $d LIMIT $startTicket, $limit") or die(mysql_error());
}

echo json_encode($ticket_data);
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.