0

次のようなクエリがあります。

$sql_place = "SELECT * FROM place
INNER JOIN join_appointment_place 
ON join_appointment_place.id_place = place.id_place
INNER JOIN join_event_appointment 
ON join_appointment_place.id_appointment = join_event_appointment.id_appointment
WHERE join_event_appointment.id_event = " . $EVENT_ID . "
ORDER BY place.title, place.category";

問題は、すべての場所を異なる .xml で返す必要があることですtitles。だから私は使用する必要がありますDISTINCT。しかし、どのようにして を選択DISTINCT titleし、同時に他のすべての値を返すのでしょうか?

  $sql_place = "SELECT 
  DISTINCT 
  place.id_place, 
  place.avatar, 
  place.category, 
  place.title, 
  place.description, 
  place.address, 
  place.latitude,
  place.longitude, 
  place.email, 
  place.web, 
  place.shared FROM place
  INNER JOIN join_appointment_place 
  ON join_appointment_place.id_place = place.id_place
  INNER JOIN join_event_appointment 
  ON join_appointment_place.id_appointment = join_event_appointment.id_appointment
  WHERE join_event_appointment.id_event = " . $EVENT_ID . "
  ORDER BY place.title, place.category";

上記は私が試したものです。しかし、 DISTINCT だけでなく、選択した各列にも適用されているのではないかと心配しています。titleこれは私が探しているものではありません。助けてくれてありがとう:)

4

4 に答える 4

1

それらのタイトルを取得したいだけの場合は、GROUP BY place.title を使用してみてください。

于 2013-07-02T08:02:44.883 に答える
0

はい、すべての列で個別を返しますが、それは悪いことではありません。たとえば、そのような個別のクエリは次を返す可能性があります。

Col1    Col2    Col3    Col4
1       ABC     XYZ     Y
1       ABC     XYZ     N

あなたの質問は、すべての列に対して個別の値のみを取得することを期待しているように聞こえますが。

于 2013-07-02T08:02:51.750 に答える
-1

心配な場合は、ネストされたクエリを使用できます。

個別のタイトルを選択し、その結果を外側のクエリの where 句で使用します。

例えば

SELECT * FROM Customers
WHERE title IN (SELECT DISTINCT title FROM titles WHERE title > 'X');
于 2013-07-02T08:02:19.980 に答える