| 
							shtyrmovik
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 «  : 31-05-2009 09:43 »   | 
								
								 | 
							  
							 
							Раньше у меня в таблице Zayavka содержались только Idшиники из таблицы KlassifikaciyaInstrumentov и RabInfo. Тперерь надо чтоб отображались и соответствующие айдишникам поля (RabInfo.Familia, RabInfo.Name, KlassifikaciyaInstrumentov.Name) из других таблиц RabInfo, KlassifikaciyaInstrumentov
  Результат такой, что все поля пустые. Подскажите пожалуйста где у меня в запросе ошибка.
  SELECT Zayavka.Id, Zayavka.Quantity, Zayavka.DataVidachi, Zayavka.DataSdachi, Zayavka.IdRab, Zayavka.IdClassic, Zayavka.Instrument, RabInfo.Familia, RabInfo.Name,  KlassifikaciyaInstrumentov.Name FROM RabInfo       LEFT JOIN Zayavka ON RabInfo.Id =  Zayavka.IdRab       LEFT JOIN KlassifikaciyaInstrumentov ON KlassifikaciyaInstrumentov.Id = Zayavka.IdClassic
 
  и ещё один запрос с той же проблемой
  SELECT CkladOtdel.Id, CkladOtdel.IdClass, CkladOtdel.Stellash, CkladOtdel.Polka, CkladOtdel.Komnata, CkladOtdel.Instrument,  KlassifikaciyaInstrumentov.Name FROM CkladOtdel LEFT JOIN KlassifikaciyaInstrumentov ON CkladOtdel.IdClass = KlassifikaciyaInstrumentov.Id
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 31-05-2009 09:48 от Sel »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Oldy
							
						 | 
						
							
								  | 
								
									
									 « Ответ #1 : 31-05-2009 09:51 »   | 
								
								 | 
							  
							 
							Ошибка в выражении FROM. Там не перечислены все таблицы из которых извлекаются данные 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							С уважением, Oldy. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							shtyrmovik
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #2 : 31-05-2009 09:53 »   | 
								
								 | 
							  
							 
							Если начать перечислять, то он на них ругается Not unique table/alias
  Тут же конструкция LEFT JOIN, поэтому таблицы, используемые слева вводить нельзя 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 31-05-2009 09:59 от Sel »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Oldy
							
						 | 
						
							
								  | 
								
									
									 « Ответ #3 : 31-05-2009 09:59 »   | 
								
								 | 
							  
							 
							Ругается на "FROM Zayavka, RabInfo, KlassifikaciyaInstrumentov"? Попробуйте не выбирать поля Zayavka.IdRab, Zayavka.IdClassic, они нужны только для связей. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							С уважением, Oldy. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							shtyrmovik
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #4 : 31-05-2009 10:10 »   | 
								
								 | 
							  
							 
							нет, персонально на таблицу, к примеру Not unique table/alias: 'KlassifikaciyaInstrumentov'
  Поля эти я уже и убирал и вставлял, разницы никакой 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Oldy
							
						 | 
						
							
								  | 
								
									
									 « Ответ #5 : 31-05-2009 10:38 »   | 
								
								 | 
							  
							 
							RabInfo.Name, KlassifikaciyaInstrumentov.Name - в результирующем запросе два поля с одним именем. Попробуйте KlassifikaciyaInstrumentov.Name AS KlassName   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							С уважением, Oldy. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							shtyrmovik
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #6 : 31-05-2009 10:59 »   | 
								
								 | 
							  
							 
							Благодарю, заработало. Но возникла другая проблема
  $a6 = mysql_query("SELECT Zayavka.Id, Zayavka.Quantity, Zayavka.DataVidachi, Zayavka.DataSdachi, Zayavka.IdRab, Zayavka.IdClassic, Zayavka.Instrument, RabInfo.Familia, RabInfo.Name, KlassifikaciyaInstrumentov.Name as Instrumentt FROM RabInfo       LEFT JOIN Zayavka ON RabInfo.Id =  Zayavka.IdRab       LEFT JOIN KlassifikaciyaInstrumentov ON KlassifikaciyaInstrumentov.Id = Zayavka.IdClassic ");
  У меня выводятся все данные из таблицы  RabInfo (там, к примеру, если у рабочего нет инструмента, то он не должен выводиться),  помоги, пожалуйста, написать его, потому что я без понятия, как здесь это сделать.
  Его это условие. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 31-05-2009 11:20 от Sel »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Oldy
							
						 | 
						
							
								  | 
								
									
									 « Ответ #7 : 31-05-2009 11:23 »   | 
								
								 | 
							  
							 
							Смотрите на способы присоединения таблиц: LEFT JOIN RIGHT JOIN INNER JOIN OUTER JOIN 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							С уважением, Oldy. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							shtyrmovik
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									«  Ответ #8 : 31-05-2009 11:40 »    | 
								
								 | 
							  
							 
							благодарю за подсказку! WHERE RabInfo.Id = Zayavka.IdRab
  Большое спасибо, вы мне очень помогли. Надеюсь, у меня больше вопросы не возникнут ))) 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #9 : 07-08-2009 05:24 »   | 
								
								 | 
							  
							 
							Access: вот такой запрос работает (к предмету приписывается дата покупки из таблицы t_buh, поиск по buh_id) Select  i.item_id ,i.item_name ,i.buh_id_buy ,i.sold ,i.buh_id_sell ,b.buh_date as buy_date  from t_itemz i  left join t_buh b on b.buh_id=i.buh_id_buy
  а ещё нужно бы приписать и дату продажи, но почему то не выходит, что то в синтаксисе напутано ? Select  i.item_id ,i.item_name ,i.buh_id_buy ,i.sold ,i.buh_id_sell ,s.buh_date as sell_date ,b.buh_date as buy_date  from t_itemz i  left join t_buh s on s.buh_id=i.buh_id_sell //<<<ругается на это место  left join t_buh b on b.buh_id=i.buh_id_buy
   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Dimka
							
								Деятель 
								Команда клуба
								
								 
								  Offline
								Пол:   
								
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #10 : 07-08-2009 06:40 »   | 
								
								 | 
							  
							 
							Алексей1153++, в Access надо явно скобки ставить вокруг join объединений, чтобы указать их порядок.
  Твоя запись означает (X join Y) join Z. Можно и X join (Y join Z). 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел) 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #11 : 07-08-2009 06:57 »   | 
								
								 | 
							  
							 
							во, спасибо )) вот это сработало как надо Select  i.item_id ,i.item_name ,i.buh_id_buy ,i.sold ,i.buh_id_sell ,s.buh_date as sell_date ,b.buh_date as buy_date  from  (t_itemz i left join t_buh s on s.buh_id=i.buh_id_sell)             left join t_buh b on b.buh_id=i.buh_id_buy
   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	 |